1+ name : RIA DigiDoc Android
2+ on : [push]
3+ env :
4+ BUILD_NUMBER : ${{ github.run_number }}
5+ jobs :
6+ ubuntu :
7+ name : Build on Ubuntu
8+ if : contains(github.repository, 'open-eid/RIA-DigiDoc-Android')
9+ runs-on : ubuntu-latest
10+ env :
11+ APK_RELEASE_DIRECTORY : " app/build/outputs/apk/release"
12+ steps :
13+ - name : Checkout
14+ uses : actions/checkout@v5
15+ with :
16+ submodules : recursive
17+ - name : Setup environment
18+ env :
19+ GOOGLE_SERVICES_JSON : ${{ secrets.GOOGLE_SERVICES_JSON }}
20+ run : |
21+ echo "APP_VERSION_NAME=$(grep -E '^[[:space:]]*versionName[[:space:]]*=' gradle/libs.versions.toml \
22+ | head -n1 \
23+ | sed -E 's/.*=[[:space:]]*"([^"]+)".*/\1/' \
24+ | cut -d'-' -f1)" >> "$GITHUB_ENV"
25+ cd ${{ github.workspace }}/app
26+ echo -n "$GOOGLE_SERVICES_JSON" | base64 --decode > "google-services.json"
27+ - name : Enable KVM to run instrumented tests
28+ run : |
29+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
30+ sudo udevadm control --reload-rules
31+ sudo udevadm trigger --name-match=kvm
32+ - name : Setup JDK
33+ uses : actions/setup-java@v4
34+ with :
35+ distribution : zulu
36+ java-version : 21
37+ - name : Setup Gradle
38+ uses : gradle/actions/setup-gradle@v4
39+ - name : Generate debug.keystore
40+ run : |
41+ mkdir -p ${{ github.workspace }}/app/src/main/assets/keystore/
42+ keytool -genkeypair \
43+ -alias androiddebugkey \
44+ -keyalg RSA \
45+ -keysize 2048 \
46+ -validity 10000 \
47+ -keystore ${{ github.workspace }}/app/src/main/assets/keystore/debug.keystore \
48+ -storepass android \
49+ -keypass android \
50+ -dname "CN=Android Debug,O=Android,C=US"
51+ echo "Generated debug.keystore at ${{ github.workspace }}/app/src/main/assets/keystore/debug.keystore"
52+ - name : Set up Android SDK
53+ uses : android-actions/setup-android@v3
54+ - name : Run fetch default configuration
55+ run : |
56+ ./gradlew fetchAndPackageDefaultConfiguration
57+ - name : Run unit tests
58+ run : |
59+ ./gradlew test
60+ - name : Run instrumented tests on emulator
61+ uses : reactivecircus/android-emulator-runner@v2
62+ with :
63+ api-level : 36
64+ arch : x86_64
65+ target : google_apis
66+ disable-animations : true
67+ emulator-boot-timeout : 900
68+ emulator-options : -no-window -gpu swiftshader_indirect -no-snapshot -noaudio -no-boot-anim -camera-back none
69+ profile : pixel_7_pro
70+ ram-size : 4096M
71+ heap-size : 512M
72+ disk-size : 2048M
73+ script : ./gradlew connectedCheck -Dorg.gradle.jvmargs="-Xmx4g"
74+ - name : Assemble application
75+ run : ./gradlew -PappVersionName=${{ env.APP_VERSION_NAME }}.${{ env.BUILD_NUMBER }} assembleRelease --info --quiet
76+ - name : Sign application APK
77+ uses : r0adkll/sign-android-release@v1
78+ id : signed_apk
79+ with :
80+ releaseDirectory : ${{ env.APK_RELEASE_DIRECTORY }}
81+ signingKeyBase64 : ${{ secrets.SIGNING_KEY }}
82+ alias : ${{ secrets.SIGNING_KEY_ALIAS }}
83+ keyStorePassword : ${{ secrets.KEYSTORE_PASSWORD }}
84+ env :
85+ BUILD_TOOLS_VERSION : " 35.0.0"
86+ - name : Rename APK
87+ run : |
88+ mv ${{ github.workspace }}/${{ env.APK_RELEASE_DIRECTORY }}/app-release-unsigned-signed.apk ${{ github.workspace }}/${{ env.APK_RELEASE_DIRECTORY }}/"RIA_DigiDoc_debug_${{ env.APP_VERSION_NAME }}.${{ env.BUILD_NUMBER }}.apk"
89+ - name : Upload APK
90+ uses : actions/upload-artifact@v4
91+ if : success()
92+ with :
93+ name : " RIA_DigiDoc_debug_${{ env.APP_VERSION_NAME }}.${{ env.BUILD_NUMBER }}"
94+ path : ${{ github.workspace }}/${{ env.APK_RELEASE_DIRECTORY }}/RIA_DigiDoc_debug_${{ env.APP_VERSION_NAME }}.${{ env.BUILD_NUMBER }}.apk
0 commit comments