fix(ci): release action

This commit is contained in:
auth 2024-03-27 13:13:08 +01:00
parent 44eccb66d1
commit 023f35714e
3 changed files with 187 additions and 33 deletions

View File

@ -1,6 +1,6 @@
name: "Bug report" name: "Bug report"
description: "Report an issue to help the project improve." description: "Report an issue to help the project improve."
title: "TITLE" title: "..."
labels: labels:
- "bug" - "bug"
body: body:

View File

@ -1,6 +1,6 @@
name: "Feature suggestion" name: "Feature suggestion"
description: Suggest a new feature to help the project improve. description: Suggest a new feature to help the project improve.
title: "feat: TITLE" title: "..."
labels: [ labels: [
"enhancement" "enhancement"
] ]

View File

@ -1,8 +1,147 @@
name: Release CI name: Release CI
on: on:
workflow_dispatch: workflow_dispatch:
inputs:
prerelease:
description: 'Mark as Pre-release'
required: false
type: boolean
publish:
description: 'Publish release'
required: false
type: boolean
default: true
jobs: jobs:
build: job_armv8:
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
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
run: ./gradlew assembleArmv7Release
- name: Sign APK
id: sign_app
uses: kevin-david/zipalign-sign-android-release@main
with:
releaseDirectory: app/build/outputs/apk/armv7/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/armv7/release/
shopt -s extglob
rm !(*-signed*)
- name: Upload artifact
uses: actions/upload-artifact@v4
with:
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: Build
run: ./gradlew assembleAllRelease
- name: Sign APK
id: sign_app
uses: kevin-david/zipalign-sign-android-release@main
with:
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: 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: snapenhance-universal-release
path: app/build/outputs/apk/all/release/*.apk
job_manager:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Checkout repo - name: Checkout repo
@ -20,57 +159,72 @@ jobs:
- name: Grant execute permission for gradlew - name: Grant execute permission for gradlew
run: chmod +x gradlew run: chmod +x gradlew
- name: Clean Gradle Cache - name: Build
run: ./gradlew clean run: ./gradlew manager:assembleRelease
- name: Build Release APK - name: Sign APK
run: ./gradlew assembleRelease id: sign_app
- name: Sign armv7 APK
id: sign_armv7_app
uses: kevin-david/zipalign-sign-android-release@main uses: kevin-david/zipalign-sign-android-release@main
with: with:
releaseDirectory: app/build/outputs/apk/armv7/release/ releaseDirectory: manager/build/outputs/apk/release/
signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }} signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }}
alias: ${{ secrets.KEY_ALIAS }} alias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }} keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }} keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Upload armv7 artifact - name: Delete unsigned file
run: |
cd manager/build/outputs/apk/release/
shopt -s extglob
rm !(*-signed*)
- name: Upload artifact
uses: actions/upload-artifact@v4 uses: actions/upload-artifact@v4
with: with:
name: app-armv7-release name: manager
path: ${{ steps.sign_armv7_app.outputs.signedReleaseFile }} path: manager/build/outputs/apk/release/*.apk
- name: Sign armv8 APK job_release:
id: sign_armv8_app runs-on: ubuntu-latest
uses: kevin-david/zipalign-sign-android-release@main if: ${{ inputs.publish == true }}
needs: [job_armv8, job_armv7, job_universal, job_manager]
steps:
- name: Checkout repo
uses: actions/checkout@v4
with: with:
releaseDirectory: app/build/outputs/apk/armv8/release/ submodules: 'recursive'
signingKeyBase64: ${{ secrets.JAVA_KEYSTORE_DATA }}
alias: ${{ secrets.KEY_ALIAS }}
keyStorePassword: ${{ secrets.KEYSTORE_PASSWORD }}
keyPassword: ${{ secrets.KEY_PASSWORD }}
- name: Upload armv8 artifact - name: set up JDK 17
uses: actions/upload-artifact@v4 uses: actions/setup-java@v4
with: with:
name: app-armv8-release java-version: '17'
path: ${{ steps.sign_armv8_app.outputs.signedReleaseFile }} distribution: 'temurin'
cache: gradle
- name: Generate Version - name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Generate version
run: ./gradlew getVersion run: ./gradlew getVersion
- name: Set Version to Environment - name: Set Environment Variables
id: version-env 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 - name: Publish APK
uses: marvinpinto/action-automatic-releases@latest uses: marvinpinto/action-automatic-releases@latest
with: with:
repo_token: "${{ secrets.GITHUB_TOKEN }}" repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false prerelease: ${{ inputs.prerelease }}
files: | files: bins/*.apk
${{ steps.sign_armv7_app.outputs.signedReleaseFile }}
${{ steps.sign_armv8_app.outputs.signedReleaseFile }}
automatic_release_tag: v${{ env.version }} automatic_release_tag: v${{ env.version }}