7
7
unit-test :
8
8
runs-on : ubuntu-latest
9
9
steps :
10
- - uses : actions/checkout@v3
10
+ - uses : actions/checkout@v4
11
11
- uses : ruby/setup-ruby@v1
12
12
with :
13
13
ruby-version : ' 3.1'
@@ -21,22 +21,22 @@ jobs:
21
21
uses : actions/cache@v3
22
22
with :
23
23
path : ~/.gradle/wrapper
24
- key : ${{ runner.OS }}-gradle-wrapper-cache-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
24
+ key : ${{ runner.OS }}-gradle-wrapper-cache-${{ hashFiles('build. gradle.kts', 'settings.gradle.kts', 'gradle /wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml ') }}
25
25
restore-keys : |
26
26
${{ runner.OS }}-gradle-wrapper-cache-
27
27
- name : Cache Gradle caches
28
28
uses : actions/cache@v3
29
29
with :
30
30
path : ~/.gradle/caches
31
- key : ${{ runner.OS }}-gradle-caches-cache-${{ hashFiles('build.gradle') }}
31
+ key : ${{ runner.OS }}-gradle-caches-cache-${{ hashFiles('build.gradle.kts', 'settings.gradle.kts', 'gradle/libs.versions.toml ') }}
32
32
restore-keys : |
33
33
${{ runner.OS }}-gradle-caches-cache-
34
34
- name : generate ksProp file
35
35
run : ./gradlew generateKsPropFile
36
36
- name : generate google-services.json file
37
- run : ./gradlew generateGoogleServicesJson
38
37
env :
39
38
GOOGLE_SERVICES_JSON : ${{ secrets.GOOGLE_SERVICES_JSON }}
39
+ run : ./gradlew generateGoogleServicesJson
40
40
- name : setup fastlane
41
41
run : bundle install
42
42
- name : run unit tests
@@ -50,12 +50,26 @@ jobs:
50
50
lint :
51
51
runs-on : ubuntu-latest
52
52
steps :
53
- - uses : actions/checkout@v1
53
+ - uses : actions/checkout@v4
54
54
- name : set up JDK 17
55
- uses : actions/setup-java@v1
55
+ uses : actions/setup-java@v4
56
56
with :
57
57
distribution : ' zulu'
58
58
java-version : ' 17'
59
+ - name : Cache Gradle wrapper
60
+ uses : actions/cache@v3
61
+ with :
62
+ path : ~/.gradle/wrapper
63
+ key : ${{ runner.OS }}-gradle-wrapper-cache-${{ hashFiles('build.gradle.kts', 'settings.gradle.kts', 'gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }}
64
+ restore-keys : |
65
+ ${{ runner.OS }}-gradle-wrapper-cache-
66
+ - name : Cache Gradle caches
67
+ uses : actions/cache@v3
68
+ with :
69
+ path : ~/.gradle/caches
70
+ key : ${{ runner.OS }}-gradle-caches-cache-${{ hashFiles('build.gradle.kts', 'settings.gradle.kts', 'gradle/libs.versions.toml') }}
71
+ restore-keys : |
72
+ ${{ runner.OS }}-gradle-caches-cache-
59
73
- name : generate ksProp file
60
74
run : ./gradlew generateKsPropFile
61
75
- name : generate google-services.json file
@@ -74,12 +88,26 @@ jobs:
74
88
runs-on : ubuntu-latest
75
89
steps :
76
90
- name : checkout
77
- uses : actions/checkout@v2
91
+ uses : actions/checkout@v4
78
92
- name : set up JDK 17
79
93
uses : actions/setup-java@v4
80
94
with :
81
95
distribution : ' zulu'
82
96
java-version : ' 17'
97
+ - name : Cache Gradle wrapper
98
+ uses : actions/cache@v3
99
+ with :
100
+ path : ~/.gradle/wrapper
101
+ key : ${{ runner.OS }}-gradle-wrapper-cache-${{ hashFiles('build.gradle.kts', 'settings.gradle.kts', 'gradle/wrapper/gradle-wrapper.properties', 'gradle/libs.versions.toml') }}
102
+ restore-keys : |
103
+ ${{ runner.OS }}-gradle-wrapper-cache-
104
+ - name : Cache Gradle caches
105
+ uses : actions/cache@v3
106
+ with :
107
+ path : ~/.gradle/caches
108
+ key : ${{ runner.OS }}-gradle-caches-cache-${{ hashFiles('build.gradle.kts', 'settings.gradle.kts', 'gradle/libs.versions.toml') }}
109
+ restore-keys : |
110
+ ${{ runner.OS }}-gradle-caches-cache-
83
111
- name : generate ksProp file
84
112
run : ./gradlew generateKsPropFile
85
113
- name : generate google-services.json file
@@ -91,8 +119,38 @@ jobs:
91
119
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
92
120
sudo udevadm control --reload-rules
93
121
sudo udevadm trigger --name-match=kvm
94
- - name : run tests
122
+ - name : run tests with screen record
95
123
uses : reactivecircus/android-emulator-runner@v2
96
124
with :
97
125
api-level : 29
98
- script : ./gradlew connectedCheck
126
+ script : |
127
+ adb shell screenrecord /sdcard/ui-test.mp4 &
128
+ SCREENRECORD_PID=$!
129
+ ./gradlew connectedCheck
130
+ kill $SCREENRECORD_PID || true
131
+ adb pull /sdcard/ui-test.mp4 ./ui-test.mp4 || true
132
+ - name : Upload UI test video
133
+ uses : actions/upload-artifact@v4
134
+ with :
135
+ name : ui-test-video
136
+ path : ./ui-test.mp4
137
+ - name : Upload UI test results
138
+ if : always()
139
+ uses : actions/upload-artifact@v4
140
+ with :
141
+ name : ui-test-results
142
+ path : app/build/reports/androidTests/connected/
143
+
144
+ notify-slack :
145
+ needs : unit-test
146
+ runs-on : ubuntu-latest
147
+ if : always() # Runs regardless of success or failure of unit-test
148
+ steps :
149
+ - name : Send Slack notification
150
+ env :
151
+ SLACK_WEBHOOK_URL : ${{ secrets.SLACK_WEBHOOK_URL_GITHUB_BUILD_INFO }}
152
+ run : |
153
+ STATUS="${{ needs.unit-test.result }}"
154
+ curl -X POST -H 'Content-type: application/json' \
155
+ --data "{\"text\":\"Unit tests completed: $STATUS\"}" \
156
+ $SLACK_WEBHOOK_URL
0 commit comments