diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml deleted file mode 100644 index 17cc605..0000000 --- a/.github/workflows/android.yml +++ /dev/null @@ -1,26 +0,0 @@ -name: Android CI - -on: - push: - branches: [ "main" ] - pull_request: - branches: [ "main" ] - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - name: set up JDK 24 - uses: actions/setup-java@v4 - with: - java-version: '24' - distribution: 'temurin' - cache: gradle - - - name: Grant execute permission for gradlew - run: chmod +x gradlew - - name: Build with Gradle - run: ./gradlew build diff --git a/.github/workflows/build-debug.yml b/.github/workflows/build-debug.yml new file mode 100644 index 0000000..599ffcc --- /dev/null +++ b/.github/workflows/build-debug.yml @@ -0,0 +1,55 @@ +name: Build Debug APK + +on: + push: + branches: + - main + + pull_request: + branches: + - main + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + test: + name: Unit Tests + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: 24 + cache: "gradle" + + - name: Run unit tests + run: ./gradlew clean testDebug + + build-debug: + name: Build Debug APK + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: 24 + cache: "gradle" + + - name: Build debug APK + run: ./gradlew assembleDebug + + - name: Upload APK + uses: actions/upload-artifact@v4 + with: + name: debug-apk + path: app/build/outputs/apk/debug/app-debug.apk diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..82f9b10 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,74 @@ +name: Build and Release + +on: + push: + tags: + - 'v*.*.*' + +jobs: + test: + name: Unit Tests + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: 24 + cache: "gradle" + + - name: Run unit tests + run: ./gradlew clean testDebug + + build: + name: Build Release APK + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Setup JDK + uses: actions/setup-java@v4 + with: + distribution: "temurin" + java-version: 24 + cache: "gradle" + + - name: Build release APK + run: ./gradlew assembleRelease + + - name: Decode keystore + run: echo "${{ secrets.ANDROID_KEYSTORE }}" | base64 -d > my-release-key.jks + + - name: Sign APK + run: | + jarsigner -verbose -sigalg SHA256withRSA -digestalg SHA-256 \ + -keystore my-release-key.jks -storepass ${{ secrets.KEYSTORE_PASSWORD }} \ + -keypass ${{ secrets.GARAGE_LOG_ALIAS_PASSWORD }} \ + app/build/outputs/apk/release/app-release-unsigned.apk ${{ secrets.GARAGE_LOG_ALIAS }} + + - name: Verify signature + run: jarsigner -verify -verbose -certs app/build/outputs/apk/release/app-release-unsigned.apk + + - name: Align APK + run: | + $ANDROID_HOME/build-tools/34.0.0/zipalign -v 4 \ + app/build/outputs/apk/release/app-release-unsigned.apk \ + app/build/outputs/apk/release/app-release.apk + + release: + name: Release APK + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Release + uses: softprops/action-gh-release@v2 + with: + files: app/build/outputs/apk/release/app-release.apk