commit 023f35714e2bfdfd39340e3caee2ec3938dda7c4
parent 44eccb66d1c68becd89100c6e146c0f7e785a647
Author: auth <64337177+authorisation@users.noreply.github.com>
Date:   Wed, 27 Mar 2024 13:13:08 +0100

fix(ci): release action

Diffstat:
M.github/ISSUE_TEMPLATE/bug_report.yml | 2+-
M.github/ISSUE_TEMPLATE/feature_suggestion.yml | 2+-
M.github/workflows/release.yml | 202+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------
3 files changed, 180 insertions(+), 26 deletions(-)

diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -1,6 +1,6 @@ name: "Bug report" description: "Report an issue to help the project improve." -title: "TITLE" +title: "..." labels: - "bug" body: diff --git a/.github/ISSUE_TEMPLATE/feature_suggestion.yml b/.github/ISSUE_TEMPLATE/feature_suggestion.yml @@ -1,6 +1,6 @@ name: "Feature suggestion" description: Suggest a new feature to help the project improve. -title: "feat: TITLE" +title: "..." labels: [ "enhancement" ] diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml @@ -1,9 +1,19 @@ name: Release CI on: workflow_dispatch: + inputs: + prerelease: + description: 'Mark as Pre-release' + required: false + type: boolean + publish: + description: 'Publish release' + required: false + type: boolean + default: true jobs: - build: - runs-on: ubuntu-latest + job_armv8: + runs-on: macos-latest steps: - name: Checkout repo uses: actions/checkout@v4 @@ -20,14 +30,54 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - - name: Clean Gradle Cache - run: ./gradlew clean + - name: Build + run: ./gradlew assembleArmv8Release + + - name: Sign APK + id: sign_app + uses: kevin-david/zipalign-sign-android-release@main + with: + releaseDirectory: app/build/outputs/apk/armv8/release/ + signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }} + alias: ${{ secrets.KEY_ALIAS }} + keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Delete unsigned file + run: | + cd app/build/outputs/apk/armv8/release/ + shopt -s extglob + rm !(*-signed*) + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: snapenhance-armv8-release + path: app/build/outputs/apk/armv8/release/*.apk + + job_armv7: + runs-on: macos-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew - - name: Build Release APK - run: ./gradlew assembleRelease + - name: Build + run: ./gradlew assembleArmv7Release - - name: Sign armv7 APK - id: sign_armv7_app + - name: Sign APK + id: sign_app uses: kevin-david/zipalign-sign-android-release@main with: releaseDirectory: app/build/outputs/apk/armv7/release/ @@ -36,41 +86,145 @@ jobs: keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - - name: Upload armv7 artifact + - name: Delete unsigned file + run: | + cd app/build/outputs/apk/armv7/release/ + shopt -s extglob + rm !(*-signed*) + + - name: Upload artifact uses: actions/upload-artifact@v4 with: - name: app-armv7-release - path: ${{ steps.sign_armv7_app.outputs.signedReleaseFile }} + name: snapenhance-armv7-release + path: app/build/outputs/apk/armv7/release/*.apk + + job_universal: + runs-on: macos-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew - - name: Sign armv8 APK - id: sign_armv8_app + - name: Build + run: ./gradlew assembleAllRelease + + - name: Sign APK + id: sign_app uses: kevin-david/zipalign-sign-android-release@main with: - releaseDirectory: app/build/outputs/apk/armv8/release/ + releaseDirectory: app/build/outputs/apk/all/release/ signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }} alias: ${{ secrets.KEY_ALIAS }} keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }} - - name: Upload armv8 artifact + - name: Delete unsigned file + run: | + cd app/build/outputs/apk/all/release/ + shopt -s extglob + rm !(*-signed*) + + - name: Upload universal uses: actions/upload-artifact@v4 with: - name: app-armv8-release - path: ${{ steps.sign_armv8_app.outputs.signedReleaseFile }} + name: snapenhance-universal-release + path: app/build/outputs/apk/all/release/*.apk - - name: Generate Version + job_manager: + runs-on: ubuntu-latest + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Build + run: ./gradlew manager:assembleRelease + + - name: Sign APK + id: sign_app + uses: kevin-david/zipalign-sign-android-release@main + with: + releaseDirectory: manager/build/outputs/apk/release/ + signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }} + alias: ${{ secrets.KEY_ALIAS }} + keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} + keyPassword: ${{ secrets.KEY_PASSWORD }} + + - name: Delete unsigned file + run: | + cd manager/build/outputs/apk/release/ + shopt -s extglob + rm !(*-signed*) + + - name: Upload artifact + uses: actions/upload-artifact@v4 + with: + name: manager + path: manager/build/outputs/apk/release/*.apk + + job_release: + runs-on: ubuntu-latest + if: ${{ inputs.publish == true }} + needs: [job_armv8, job_armv7, job_universal, job_manager] + steps: + - name: Checkout repo + uses: actions/checkout@v4 + with: + submodules: 'recursive' + + - name: set up JDK 17 + uses: actions/setup-java@v4 + with: + java-version: '17' + distribution: 'temurin' + cache: gradle + + - name: Grant execute permission for gradlew + run: chmod +x gradlew + + - name: Generate version run: ./gradlew getVersion - - name: Set Version to Environment + - name: Set Environment Variables id: version-env - run: echo "version=$(cat app/build/version.txt)" >> $GITHUB_ENV + run: | + echo "version=$(cat app/build/version.txt)" >> $GITHUB_ENV + echo "sha_short=$(git rev-parse --short HEAD)" >> $GITHUB_OUTPUT + + - name: Download artifacts + uses: actions/download-artifact@v4 + with: + path: bins/ + merge-multiple: true - name: Publish APK uses: marvinpinto/action-automatic-releases@latest with: repo_token: "${{ secrets.GITHUB_TOKEN }}" - prerelease: false - files: | - ${{ steps.sign_armv7_app.outputs.signedReleaseFile }} - ${{ steps.sign_armv8_app.outputs.signedReleaseFile }} + prerelease: ${{ inputs.prerelease }} + files: bins/*.apk automatic_release_tag: v${{ env.version }} + +