diff --git a/.github/workflows/build-f-droid-apk.yml b/.github/workflows/build-aab.yml similarity index 76% rename from .github/workflows/build-f-droid-apk.yml rename to .github/workflows/build-aab.yml index 75aaa2f..9110e05 100644 --- a/.github/workflows/build-f-droid-apk.yml +++ b/.github/workflows/build-aab.yml @@ -83,7 +83,7 @@ jobs: restore-keys: | ${{ runner.os }}-gradle- - - name: Build by eject eas and remove debug signing key + - name: Build by eject eas and remove debug signing key for aab run: | pnpm exec expo prebuild -p android --clean pnpm exec zx scripts/removeDebugSigningConfigs.mjs @@ -120,34 +120,3 @@ jobs: files: android/app/build/outputs/bundle/release/app-release-signed.aab env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - - - name: Build APK - run: | - cd android - ./gradlew clean - ./gradlew assembleRelease --no-daemon --warning-mode all - - ## sign generated apk - - name: Sign APK - id: sign_app_apk - uses: r0adkll/sign-android-release@v1 - with: - releaseDirectory: android/app/build/outputs/apk/release - signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }} - alias: ${{ secrets.ANDROID_ALIAS }} - keyStorePassword: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }} - keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }} - env: - BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOLS_VERSION }} - - name: Rename APK - run: mv android/app/build/outputs/apk/release/app-release-unsigned.apk android/app/build/outputs/apk/release/app-release-signed.apk - - - name: Create Release - uses: softprops/action-gh-release@v1 - if: startsWith(github.ref, 'refs/tags/') - with: - draft: true - generate_release_notes: true - files: android/app/build/outputs/apk/release/app-release-signed.apk - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/build-apk.yml b/.github/workflows/build-apk.yml new file mode 100644 index 0000000..0844161 --- /dev/null +++ b/.github/workflows/build-apk.yml @@ -0,0 +1,122 @@ +name: Build FDroid APK + +on: + workflow_dispatch: + push: + tags: + - 'fdroid-v*.*.*' + - 'v*.*.*' + paths-ignore: + - 'README.md' + - 'wiki/**' + - 'public/**' + - 'scripts/**' + - '.vscode' + - '.idea' + pull_request: + branches: + - master + - main + paths-ignore: + - 'README.md' + - 'wiki/**' + - 'public/**' + - '.scripts/**' + - '.vscode' + - '.idea' + +jobs: + build: + name: Install and build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: pnpm/action-setup@v2 + with: + version: 8 + - uses: actions/setup-node@v3 + with: + node-version: 18.x + cache: pnpm + - name: Set Up JDK + uses: actions/setup-java@v3 + with: + distribution: 'zulu' # See 'Supported distributions' for available options + java-version: '17' + - name: Setup Gradle # fix `incompatible version of Kotlin. The binary version of its metadata is 1.9.0, expected version is 1.7.1.` + uses: gradle/gradle-build-action@v2 + with: + gradle-version: 8.0.1 # use the gradle version I saw on eas build's console, which might match the kotlin version? + - name: Set Build Tools Version + run: | + echo "BUILD_TOOLS_VERSION=$(ls /usr/local/lib/android/sdk/build-tools/ | sort -V | tail -n 1)" >> $GITHUB_ENV + + + - name: Get pnpm store directory + shell: bash + run: | + echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV + + - uses: actions/cache@v3 + name: Setup pnpm cache + with: + path: ${{ env.STORE_PATH }} + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} + restore-keys: | + ${{ runner.os }}-pnpm-store- + + - name: Install dependencies + run: pnpm install + - name: Initialize and Update Submodules + run: pnpm run init-submodules + - name: Fix gradle error + run: pnpm exec zx scripts/fix-gradle.mjs + + ## configure cash for gradle : will help to reduce build time + - name: Cache Gradle Wrapper and Dependencies + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} + restore-keys: | + ${{ runner.os }}-gradle- + + - name: Build by eject eas and not remove debug signing key for apk + run: pnpm exec expo prebuild -p android --clean + + # TODO: https://github.com/tiddly-gittly/TidGi-Mobile/issues/6 + # - name: Remove prorietary bits (for fix f-droid) + # run: npx zx scripts/fit-f-droid.mjs + + - name: Build APK + run: | + cd android + ./gradlew clean + ./gradlew assembleRelease --no-daemon --warning-mode all + + ## sign generated apk + - name: Sign APK + id: sign_app_apk + uses: r0adkll/sign-android-release@v1 + with: + releaseDirectory: android/app/build/outputs/apk/release + signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY }} + alias: ${{ secrets.ANDROID_ALIAS }} + keyStorePassword: ${{ secrets.ANDROID_KEY_STORE_PASSWORD }} + keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }} + env: + BUILD_TOOLS_VERSION: ${{ env.BUILD_TOOLS_VERSION }} + - name: Rename APK + run: mv android/app/build/outputs/apk/release/app-release-unsigned.apk android/app/build/outputs/apk/release/app-release-signed.apk + + - name: Create Release + uses: softprops/action-gh-release@v1 + if: startsWith(github.ref, 'refs/tags/') + with: + draft: true + generate_release_notes: true + files: android/app/build/outputs/apk/release/app-release-signed.apk + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}