77 unit-test :
88 runs-on : ubuntu-latest
99 steps :
10- - uses : actions/checkout@v3
10+ - uses : actions/checkout@v4
1111 - uses : ruby/setup-ruby@v1
1212 with :
1313 ruby-version : ' 3.1'
@@ -21,22 +21,22 @@ jobs:
2121 uses : actions/cache@v3
2222 with :
2323 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 ') }}
2525 restore-keys : |
2626 ${{ runner.OS }}-gradle-wrapper-cache-
2727 - name : Cache Gradle caches
2828 uses : actions/cache@v3
2929 with :
3030 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 ') }}
3232 restore-keys : |
3333 ${{ runner.OS }}-gradle-caches-cache-
3434 - name : generate ksProp file
3535 run : ./gradlew generateKsPropFile
3636 - name : generate google-services.json file
37- run : ./gradlew generateGoogleServicesJson
3837 env :
3938 GOOGLE_SERVICES_JSON : ${{ secrets.GOOGLE_SERVICES_JSON }}
39+ run : ./gradlew generateGoogleServicesJson
4040 - name : setup fastlane
4141 run : bundle install
4242 - name : run unit tests
@@ -50,12 +50,26 @@ jobs:
5050 lint :
5151 runs-on : ubuntu-latest
5252 steps :
53- - uses : actions/checkout@v1
53+ - uses : actions/checkout@v4
5454 - name : set up JDK 17
55- uses : actions/setup-java@v1
55+ uses : actions/setup-java@v4
5656 with :
5757 distribution : ' zulu'
5858 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-
5973 - name : generate ksProp file
6074 run : ./gradlew generateKsPropFile
6175 - name : generate google-services.json file
@@ -74,12 +88,26 @@ jobs:
7488 runs-on : ubuntu-latest
7589 steps :
7690 - name : checkout
77- uses : actions/checkout@v2
91+ uses : actions/checkout@v4
7892 - name : set up JDK 17
7993 uses : actions/setup-java@v4
8094 with :
8195 distribution : ' zulu'
8296 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-
83111 - name : generate ksProp file
84112 run : ./gradlew generateKsPropFile
85113 - name : generate google-services.json file
@@ -91,8 +119,38 @@ jobs:
91119 echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
92120 sudo udevadm control --reload-rules
93121 sudo udevadm trigger --name-match=kvm
94- - name : run tests
122+ - name : run tests with screen record
95123 uses : reactivecircus/android-emulator-runner@v2
96124 with :
97125 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