2021-03-25 19:26:26 +08:00
name : Test
on :
pull_request : {}
push :
2021-05-07 00:25:34 +08:00
branches : [ main, develop]
2021-03-25 19:26:26 +08:00
2021-09-08 19:03:51 +08:00
# Enrich gradle.properties for CI/CD
env :
CI_GRADLE_ARG_PROPERTIES : >
-Porg.gradle.jvmargs=-Xmx2g
-Porg.gradle.parallel=false
2022-02-24 17:30:28 +08:00
2021-03-25 19:26:26 +08:00
jobs :
2022-03-11 16:45:04 +08:00
# Build Android Tests
build-android-tests :
name : Build Android Tests
2022-03-10 23:58:00 +08:00
runs-on : ubuntu-latest
2022-03-11 16:45:04 +08:00
concurrency :
group : ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('unit-tests-{0}', github.ref) }}
cancel-in-progress : true
2022-03-10 23:58:00 +08:00
steps :
- uses : actions/checkout@v3
- uses : actions/setup-java@v2
with :
distribution : 'adopt'
java-version : 11
- uses : actions/cache@v2
with :
path : |
~/.gradle/caches
~/.gradle/wrapper
key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys : |
${{ runner.os }}-gradle-
2022-03-11 16:45:04 +08:00
- name : Build Android Tests
run : ./gradlew clean assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES --stacktrace
2022-03-10 23:58:00 +08:00
2021-03-25 19:26:26 +08:00
unit-tests :
2021-05-19 23:48:12 +08:00
name : Run Unit Tests
2021-03-25 19:26:26 +08:00
runs-on : ubuntu-latest
2022-02-24 07:13:30 +08:00
# Allow all jobs on main and develop. Just one per PR.
2022-02-24 02:11:46 +08:00
concurrency :
2022-02-25 00:31:17 +08:00
group : ${{ github.ref == 'refs/heads/main' && format('unit-tests-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('unit-tests-develop-{0}', github.sha) || format('unit-tests-{0}', github.ref) }}
2022-02-24 02:11:46 +08:00
cancel-in-progress : true
2021-03-25 19:26:26 +08:00
steps :
2022-03-08 07:05:24 +08:00
- uses : actions/checkout@v3
2021-03-25 19:26:26 +08:00
- uses : actions/cache@v2
with :
path : |
~/.gradle/caches
~/.gradle/wrapper
key : ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
restore-keys : |
${{ runner.os }}-gradle-
- name : Run unit tests
2022-03-08 21:26:04 +08:00
run : ./gradlew clean test $CI_GRADLE_ARG_PROPERTIES --stacktrace
2022-03-01 19:42:54 +08:00
- name : Format unit test results
if : always()
run : python3 ./tools/ci/render_test_output.py unit ./**/build/test-results/**/*.xml
2021-09-08 19:03:51 +08:00
- name : Publish Unit Test Results
uses : EnricoMi/publish-unit-test-result-action@v1
2021-09-24 16:14:57 +08:00
if : always() &&
github.event.sender.login != 'dependabot[bot]' &&
( github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == github.repository )
2021-09-08 19:03:51 +08:00
with :
files : ./**/build/test-results/**/*.xml
2022-03-11 00:41:00 +08:00
# Notify the channel about runs against develop or main that have failures, as PRs should have caught these first.
notify :
runs-on : ubuntu-latest
needs :
- unit-tests
2022-03-11 16:45:04 +08:00
- build-android-tests
2022-03-11 00:41:00 +08:00
if : ${{ (github.ref == 'refs/heads/develop' || github.ref == 'refs/heads/main' ) && failure() }}
steps :
- uses : michaelkaye/matrix-hookshot-action@v0.3.0
with :
github_token : ${{ secrets.GITHUB_TOKEN }}
matrix_access_token : ${{ secrets.ELEMENT_ANDROID_NOTIFICATION_ACCESS_TOKEN }}
matrix_room_id : ${{ secrets.ELEMENT_ANDROID_INTERNAL_ROOM_ID }}
2022-03-11 21:39:38 +08:00
text_template : "Build is broken for ${{ github.ref }}: {{#each job_statuses }}{{#with this }}{{#if completed }}{{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
html_template : "Build is broken for ${{ github.ref }}: {{#each job_statuses }}{{#with this }}{{#if completed }}<br />{{icon conclusion }} {{name}} <font color='{{color conclusion }}'>{{conclusion}} at {{completed_at}} <a href=\"{{html_url}}\">[details]</a></font>{{/if}}{{/with}}{{/each}}"
2022-03-11 00:41:00 +08:00