diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d46bec3..a4f2c3e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,7 +11,6 @@ on: play: description: "Play: If want ignore" required: false - jobs: libcore: name: Native Build (LibCore) @@ -19,128 +18,77 @@ jobs: steps: - name: Checkout uses: actions/checkout@v4 - - name: Golang Status run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status - - name: Libcore Status run: git ls-files libcore | xargs cat | sha1sum > libcore_status - - name: LibCore Cache id: cache uses: actions/cache@v4 with: - path: app/libs/libcore.aar - key: ${{ runner.os }}-libcore-${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - restore-keys: | - ${{ runner.os }}-libcore- - + path: | + app/libs/libcore.aar + key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - name: Install Golang if: steps.cache.outputs.cache-hit != 'true' uses: actions/setup-go@v5 with: go-version: "1.22.10" - - name: Native Build if: steps.cache.outputs.cache-hit != 'true' run: ./run lib core - build: name: Build OSS APK runs-on: ubuntu-latest - needs: [libcore] - container: - image: ubuntu:latest - options: --memory=12g --cpus=4 + needs: + - libcore steps: - - name: Install essential packages - run: | - apt-get update - apt-get install -y curl openjdk-17-jdk - name: Checkout uses: actions/checkout@v4 - - name: Golang Status run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status - - name: Libcore Status run: git ls-files libcore | xargs cat | sha1sum > libcore_status - - name: LibCore Cache uses: actions/cache@v4 with: - path: app/libs/libcore.aar - key: ${{ runner.os }}-libcore-${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - restore-keys: | - ${{ runner.os }}-libcore- - - name: Set up JDK - uses: actions/setup-java@v4 - with: - distribution: 'temurin' - java-version: '17' - cache: 'gradle' - - - name: Setup Gradle - run: | - echo "org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=2g -XX:+HeapDumpOnOutOfMemoryError" >> gradle.properties - echo "org.gradle.daemon=false" >> gradle.properties - echo "org.gradle.parallel=true" >> gradle.properties - echo "kotlin.compiler.execution.strategy=in-process" >> gradle.properties - echo "kotlin.incremental=false" >> gradle.properties - - name: Gradle Cache + path: | + app/libs/libcore.aar + key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} + - name: Gradle cache uses: actions/cache@v4 with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - ~/.android/build-cache - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties', '**/*.toml') }} - restore-keys: | - ${{ runner.os }}-gradle- + path: ~/.gradle + key: gradle-oss-${{ hashFiles('**/*.gradle.kts') }} - name: Gradle Build env: BUILD_PLUGIN: none - GRADLE_OPTS: >- - -Dorg.gradle.daemon=false - -Dorg.gradle.jvmargs="-Xmx8g -XX:MaxMetaspaceSize=2g -XX:+HeapDumpOnOutOfMemoryError" - -Dorg.gradle.workers.max=2 - -Dkotlin.compiler.execution.strategy=in-process run: | - # 清理并初始化 - ./gradlew clean --no-daemon - echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/25.0.8775105" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./run init action gradle - - # 构建 - ./gradlew app:assembleOssRelease --no-daemon --stacktrace --info - + ./gradlew app:assembleOssRelease APK=$(find app/build/outputs/apk -name '*arm64-v8a*.apk') APK=$(dirname $APK) echo "APK=$APK" >> $GITHUB_ENV - - uses: actions/upload-artifact@v4 with: name: APKs path: ${{ env.APK }} - publish: name: Publish Release if: github.event.inputs.publish != 'y' runs-on: ubuntu-latest - needs: [play] + needs: build steps: - name: Checkout uses: actions/checkout@v4 - - - name: Download Artifacts + - name: Donwload Artifacts uses: actions/download-artifact@v4 with: name: APKs path: artifacts - - name: Release run: | wget -O ghr.tar.gz https://github.com/tcnksm/ghr/releases/download/v0.13.0/ghr_v0.13.0_linux_amd64.tar.gz @@ -149,54 +97,40 @@ jobs: mkdir apks find artifacts -name "*.apk" -exec cp {} apks \; ./ghr -delete -t "${{ github.token }}" -n "${{ github.event.inputs.tag }}" "${{ github.event.inputs.tag }}" apks - play: name: Build Play Bundle if: github.event.inputs.play != 'y' runs-on: ubuntu-latest - needs: [build] + needs: + - libcore steps: - name: Checkout uses: actions/checkout@v4 - - name: Golang Status run: find buildScript libcore/*.sh | xargs cat | sha1sum > golang_status - - name: Libcore Status run: git ls-files libcore | xargs cat | sha1sum > libcore_status - - name: LibCore Cache uses: actions/cache@v4 with: - path: app/libs/libcore.aar - key: ${{ runner.os }}-libcore-${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - restore-keys: | - ${{ runner.os }}-libcore- - + path: | + app/libs/libcore.aar + key: ${{ hashFiles('.github/workflows/*', 'golang_status', 'libcore_status') }} - name: Gradle cache uses: actions/cache@v4 with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-play-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle-play- - + path: ~/.gradle + key: gradle-play-${{ hashFiles('**/*.gradle.kts') }} - name: Checkout Library run: | git submodule update --init 'app/*' - - name: Gradle Build - env: - GRADLE_OPTS: "-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs=-Xmx4g" run: | echo "sdk.dir=${ANDROID_HOME}" > local.properties echo "ndk.dir=${ANDROID_HOME}/ndk/25.0.8775105" >> local.properties export LOCAL_PROPERTIES="${{ secrets.LOCAL_PROPERTIES }}" ./run init action gradle ./gradlew bundlePlayRelease - - uses: actions/upload-artifact@v4 with: name: AAB