Skip to content

Combined backup is now a proper JSON file #785

Combined backup is now a proper JSON file

Combined backup is now a proper JSON file #785

Workflow file for this run

name: Android CI
on:
workflow_dispatch:
push:
env:
APK_RELEASE_DIRECTORY: app/build/outputs/apk/release
AAB_RELEASE_DIRECTORY: app/build/outputs/bundle/release
BUILD_TOOLS_HOME: /usr/local/lib/android/sdk/build-tools
jobs:
build:
runs-on: ubuntu-latest
permissions: write-all
steps:
- uses: actions/checkout@v4
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
- uses: gradle/actions/setup-gradle@v3
with:
dependency-graph: generate-and-submit
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Cache SonarCloud packages
uses: actions/cache@v3
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
restore-keys: ${{ runner.os }}-sonar
- name: Cache Gradle packages
uses: actions/cache@v3
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
restore-keys: ${{ runner.os }}-gradle
- name: Run unit tests
run: ./gradlew test createDebugCoverageReport
- name: Android lint
run: ./gradlew lint
- name: Build
run: ./gradlew build
- name: Analyze
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
if: ${{ env.SONAR_TOKEN != '' }}
run: ./gradlew sonar
- name: Release bundle
run: ./gradlew bundleRelease
- name: Sign AAB
run: |
echo -n "${{ secrets.SIGNING_KEYSTORE }}" | base64 --decode >> $AAB_RELEASE_DIRECTORY/signingKey.jks
jarsigner -keystore $AAB_RELEASE_DIRECTORY/signingKey.jks -storepass ${{ secrets.SIGNING_KEYSTORE_PASSWORD }} \
-keypass ${{ secrets.SIGNING_ALIAS_PASSWORD }} $AAB_RELEASE_DIRECTORY/MedTimer-release.aab ${{ secrets.SIGNING_ALIAS }}
continue-on-error: true
- name: Upload App Bundle
uses: actions/upload-artifact@v4
with:
name: aab
path: ${{env.AAB_RELEASE_DIRECTORY}}/MedTimer-release.aab
- name: Setup build tool version variable
shell: bash
run: |
BUILD_TOOLS_VERSION=$(ls $BUILD_TOOLS_HOME | tail -1)
echo "BUILD_TOOLS_PATH=$BUILD_TOOLS_HOME/$BUILD_TOOLS_VERSION" >> $GITHUB_ENV
- name: Sign APK
run: |
echo -n "${{ secrets.SIGNING_KEYSTORE }}" | base64 --decode >> $APK_RELEASE_DIRECTORY/signingKey.jks
${{ env.BUILD_TOOLS_PATH }}/apksigner sign --ks $APK_RELEASE_DIRECTORY/signingKey.jks --ks-key-alias ${{ secrets.SIGNING_ALIAS }} \
--alignment-preserved \
--ks-pass pass:${{ secrets.SIGNING_KEYSTORE_PASSWORD }} --key-pass pass:${{ secrets.SIGNING_ALIAS_PASSWORD }} \
--out $APK_RELEASE_DIRECTORY/MedTimer-release-signed.apk \
$APK_RELEASE_DIRECTORY/MedTimer-release-unsigned.apk
continue-on-error: true
- name: Upload App Package
if: startsWith(github.ref, 'refs/tags/v')
uses: actions/upload-artifact@v4
with:
name: apk
path: ${{env.APK_RELEASE_DIRECTORY}}/MedTimer-release-signed.apk
- name: Create Release
if: startsWith(github.ref, 'refs/tags/v')
uses: ncipollo/release-action@v1
with:
artifacts: "app/build/outputs/bundle/release/*.aab,app/build/outputs/apk/release/*.apk"
generateReleaseNotes: true