diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 91dc6d830b..1ba71c1f61 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,6 +20,10 @@ jobs: fail-fast: false matrix: target: [ Gplay, Fdroid ] + # Allow all jobs on develop. Just one per PR. + concurrency: + group: ${{ github.ref == 'refs/heads/develop' && format('integration-tests-develop-{0}-{1}', matrix.target, github.sha) || format('build-debug-{0}-{1}', matrix.target, github.ref) }} + cancel-in-progress: true steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 @@ -43,6 +47,7 @@ jobs: name: Build unsigned GPlay APKs runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' + # Only runs on main, no concurrency. steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 diff --git a/.github/workflows/gradle-wrapper-validation.yml b/.github/workflows/gradle-wrapper-validation.yml index 405a2b3065..ee4a87293f 100644 --- a/.github/workflows/gradle-wrapper-validation.yml +++ b/.github/workflows/gradle-wrapper-validation.yml @@ -5,6 +5,7 @@ jobs: validation: name: "Validation" runs-on: ubuntu-latest + # No concurrency required, this is a prerequisite to other actions and should run every time. steps: - uses: actions/checkout@v2 - uses: gradle/wrapper-validation-action@v1 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index 4deb266824..3472a61f97 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -20,6 +20,7 @@ jobs: build-android-test-matrix-sdk: name: Matrix SDK - Build Android Tests runs-on: macos-latest + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 @@ -37,6 +38,7 @@ jobs: build-android-test-app: name: App - Build Android Tests runs-on: macos-latest + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 @@ -50,7 +52,7 @@ jobs: - name: Build Android Tests for vector run: ./gradlew clean vector:assembleAndroidTest $CI_GRADLE_ARG_PROPERTIES --stacktrace - # Run Android Tests + # Run Android Tests integration-tests: name: Matrix SDK - Running Integration Tests runs-on: macos-latest @@ -58,6 +60,7 @@ jobs: fail-fast: false matrix: api-level: [ 28 ] + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 - uses: gradle/wrapper-validation-action@v1 @@ -83,7 +86,7 @@ jobs: curl https://raw.githubusercontent.com/matrix-org/synapse/develop/demo/start.sh -o start.sh chmod 777 start.sh ./start.sh --no-rate-limit -# package: org.matrix.android.sdk.session + # package: org.matrix.android.sdk.session - name: Run integration tests for Matrix SDK [org.matrix.android.sdk.session] API[${{ matrix.api-level }}] uses: reactivecircus/android-emulator-runner@v2 with: @@ -113,7 +116,7 @@ jobs: if: always() id: get-comment-body-account run: python3 ./tools/ci/render_test_output.py account ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml -# package: org.matrix.android.sdk.internal + # package: org.matrix.android.sdk.internal - name: Run integration tests for Matrix SDK [org.matrix.android.sdk.internal] API[${{ matrix.api-level }}] if: always() uses: reactivecircus/android-emulator-runner@v2 @@ -129,7 +132,7 @@ jobs: if: always() id: get-comment-body-internal run: python3 ./tools/ci/render_test_output.py internal ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml -# package: org.matrix.android.sdk.ordering + # package: org.matrix.android.sdk.ordering - name: Run integration tests for Matrix SDK [org.matrix.android.sdk.ordering] API[${{ matrix.api-level }}] if: always() uses: reactivecircus/android-emulator-runner@v2 @@ -145,7 +148,7 @@ jobs: if: always() id: get-comment-body-ordering run: python3 ./tools/ci/render_test_output.py ordering ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml -# package: class PermalinkParserTest + # package: class PermalinkParserTest - name: Run integration tests for Matrix SDK class [org.matrix.android.sdk.PermalinkParserTest] API[${{ matrix.api-level }}] if: always() uses: reactivecircus/android-emulator-runner@v2 @@ -161,7 +164,7 @@ jobs: if: always() id: get-comment-body-permalink run: python3 ./tools/ci/render_test_output.py permalink ./matrix-sdk-android/build/outputs/androidTest-results/connected/*.xml -# package: class PermalinkParserTest + # package: class PermalinkParserTest - name: Find Comment if: always() && github.event_name == 'pull_request' uses: peter-evans/find-comment@v1 @@ -193,6 +196,7 @@ jobs: fail-fast: false matrix: api-level: [ 28 ] + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 with: @@ -246,14 +250,15 @@ jobs: notify: runs-on: ubuntu-latest needs: - - integration-tests - - ui-tests + - integration-tests + - ui-tests if: always() + # No concurrency required, runs every time on a schedule. steps: - - uses: michaelkaye/matrix-hookshot-action@v0.2.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 }} - text_template: "Nightly test run: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}" - html_template: "Nightly test run results: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}" + - uses: michaelkaye/matrix-hookshot-action@v0.2.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 }} + text_template: "Nightly test run: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}" + html_template: "Nightly test run results: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}" \ No newline at end of file diff --git a/.github/workflows/quality.yml b/.github/workflows/quality.yml index 69f17a3875..02827e7f17 100644 --- a/.github/workflows/quality.yml +++ b/.github/workflows/quality.yml @@ -18,6 +18,10 @@ jobs: ktlint: name: Kotlin Linter runs-on: ubuntu-latest + # Allow all jobs on main and develop. Just one per PR. + concurrency: + group: ${{ github.ref == 'refs/heads/main' && format('ktlint-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('ktlint-develop-{0}', github.sha) || format('ktlint-{0}', github.ref) }} + cancel-in-progress: true steps: - uses: actions/checkout@v2 - name: Run ktlint @@ -87,6 +91,10 @@ jobs: android-lint: name: Android Linter runs-on: ubuntu-latest + # Allow all jobs on main and develop. Just one per PR. + concurrency: + group: ${{ github.ref == 'refs/heads/main' && format('android-lint-main-{0}', github.sha) || github.ref == 'refs/heads/develop' && format('android-lint-develop-{0}', github.sha) || format('android-lint-{0}', github.ref) }} + cancel-in-progress: true steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 @@ -116,6 +124,10 @@ jobs: fail-fast: false matrix: target: [ Gplay, Fdroid ] + # Allow all jobs on develop. Just one per PR. + concurrency: + group: ${{ github.ref == 'refs/heads/develop' && format('apk-lint-develop-{0}-{1}', matrix.target, github.sha) || format('apk-lint-{0}-{1}', matrix.target, github.ref) }} + cancel-in-progress: true steps: - uses: actions/checkout@v2 - uses: actions/cache@v2 diff --git a/.github/workflows/sync-from-external-sources.yml b/.github/workflows/sync-from-external-sources.yml index a890082575..2323af0554 100644 --- a/.github/workflows/sync-from-external-sources.yml +++ b/.github/workflows/sync-from-external-sources.yml @@ -9,6 +9,7 @@ jobs: runs-on: ubuntu-latest # Skip in forks if: github.repository == 'vector-im/element-android' + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 - name: Set up Python 3.8 @@ -35,6 +36,7 @@ jobs: runs-on: ubuntu-latest # Skip in forks if: github.repository == 'vector-im/element-android' + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 - name: Set up Python 3.8 @@ -60,6 +62,7 @@ jobs: runs-on: ubuntu-latest # Skip in forks if: github.repository == 'vector-im/element-android' + # No concurrency required, runs every time on a schedule. steps: - uses: actions/checkout@v2 - name: Run analytics import script diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 50195638de..d6e194916b 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -15,6 +15,10 @@ jobs: unit-tests: name: Run Unit Tests runs-on: ubuntu-latest + # Allow all jobs on main and develop. Just one per PR. + 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 steps: - uses: actions/checkout@v2 - uses: actions/cache@v2