-
Notifications
You must be signed in to change notification settings - Fork 7
136 lines (104 loc) · 4.13 KB
/
build.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
on:
workflow_dispatch:
jobs:
unit_test_and_apk:
runs-on: ubuntu-latest
permissions:
contents: write
timeout-minutes: 90
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v2
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Decode google-services.json
run: echo "${{ secrets.GOOGLE_SERVICES_JSON }}" | base64 -d > ./app/google-services.json
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Setup Gradle
uses: gradle/gradle-build-action@v3
- name: Set gradlew executable
run: chmod +x ./gradlew
- name: Create local.properties and add API Keys
run: |
echo "MAPS_API_KEY=${{ secrets.MAPS_API_KEY }}" >> local.properties
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> local.properties
echo "PALM_API_KEY=${{ secrets.PALM_API_KEY }}" >> local.properties
echo "WEB_CLIENT_ID=${{ secrets.WEB_CLIENT_ID }}" >> local.properties
echo "UNSPLASH_BASE_URL=${{ secrets.UNSPLASH_BASE_URL }}" >> local.properties
- name: Check build-logic
run: ./gradlew check -p build-logic
- name: Run Unit Tests
run: ./gradlew test
- name: Build Debug APK
run: ./gradlew assembleDebug
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: app-debug-apk
path: app/build/outputs/apk/debug/app-debug.apk
androidTest:
runs-on: ubuntu-latest
timeout-minutes: 90
strategy:
matrix:
api-level: [ 26, 30 ]
steps:
- name: Enable KVM group perms
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
ls /dev/kvm
- name: Checkout
uses: actions/checkout@v4
- name: Validate Gradle Wrapper
uses: gradle/wrapper-validation-action@v2
- name: Copy CI gradle.properties
run: mkdir -p ~/.gradle ; cp .github/ci-gradle.properties ~/.gradle/gradle.properties
- name: Decode google-services.json
run: echo "${{ secrets.GOOGLE_SERVICES_JSON }}" | base64 -d > ./app/google-services.json
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: 17
- name: Setup Android SDK
uses: android-actions/setup-android@v3
- name: Setup Gradle
uses: gradle/gradle-build-action@v3
- name: Set gradlew executable
run: chmod +x ./gradlew
- name: Create local.properties and add API Keys
run: |
echo "MAPS_API_KEY=${{ secrets.MAPS_API_KEY }}" >> local.properties
echo "OPENAI_API_KEY=${{ secrets.OPENAI_API_KEY }}" >> local.properties
echo "PALM_API_KEY=${{ secrets.PALM_API_KEY }}" >> local.properties
echo "WEB_CLIENT_ID=${{ secrets.WEB_CLIENT_ID }}" >> local.properties
echo "UNSPLASH_BASE_URL=${{ secrets.UNSPLASH_BASE_URL }}" >> local.properties
- name: Package Debug APK
run: ./gradlew packageDebug
- name: Build projects before running emulator
run: bash .github/scripts/packageDebugAndroidTestScript.sh
- name: Run instrumentation tests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
arch: x86_64
disable-animations: true
disk-size: 6000M
heap-size: 1000M
script: bash .github/scripts/connectedDebugAndroidTestScript.sh
- name: Upload test reports
if: always()
uses: actions/upload-artifact@v4
with:
name: test-reports-${{ matrix.api-level }}
path: '**/build/reports/androidTests'