Skip to content

Commit d328db8

Browse files
authored
Merge pull request #304 from open-eid/MOPPAND-1704
Setup Github actions for Android and unit tests and App assemble.
2 parents 8ef975f + 42b6465 commit d328db8

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

.github/workflows/build.yml

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
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

Comments
 (0)