From 48554a47699fa7ab0a74f1d1a458692f648b45d2 Mon Sep 17 00:00:00 2001
From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com>
Date: Wed, 4 May 2022 14:57:08 +0100
Subject: [PATCH 1/9] Update version to fix name of parameter 'ratelimit'
---
.github/workflows/nightly.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 502e3e275f..200e81787c 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -43,7 +43,7 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Start synapse server
- uses: michaelkaye/setup-matrix-synapse@v1.0.1
+ uses: michaelkaye/setup-matrix-synapse@v1.0.2
with:
uploadLogs: true
httpPort: 8080
@@ -230,7 +230,7 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Start synapse server
- uses: michaelkaye/setup-matrix-synapse@v1.0.1
+ uses: michaelkaye/setup-matrix-synapse@v1.0.2
with:
uploadLogs: true
httpPort: 8080
From 3a9f0232f00e940988fb7b64845056476af779b1 Mon Sep 17 00:00:00 2001
From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com>
Date: Wed, 4 May 2022 16:13:44 +0100
Subject: [PATCH 2/9] Fix nightly build test report message.
---
.github/workflows/nightly.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 200e81787c..961e130afe 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -334,5 +334,5 @@ jobs:
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
hookshot_url: ${{ secrets.ELEMENT_ANDROID_HOOKSHOT_URL }}
- text_template: "{{#if '${{ github.event_name }}' == 'schedule' }}Nightly test run{{else}}Test run (on ${{ github.ref }}){{/if }}: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
- html_template: "{{#if '${{ github.event_name }}' == 'schedule' }}Nightly test run{{else}}Test run (on ${{ github.ref }}){{/if }}: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{icon conclusion}} {{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
+ text_template: "{{#if '${{ github.event_name == 'schedule' }}' }}Nightly test run{{else}}Test run (on ${{ github.ref }}){{/if }}: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
+ html_template: "{{#if '${{ github.event_name == 'schedule' }}' }}Nightly test run{{else}}Test run (on ${{ github.ref }}){{/if }}: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{icon conclusion}} {{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
From 8e319067ada4b93f1df726846bd2536f2b24a16d Mon Sep 17 00:00:00 2001
From: Benoit Marty
Date: Thu, 11 Feb 2021 15:43:48 +0100
Subject: [PATCH 3/9] Add diag request for Synapse
---
tools/hs_diag.py | 3 +++
1 file changed, 3 insertions(+)
diff --git a/tools/hs_diag.py b/tools/hs_diag.py
index 50f117bc8e..8651321fa3 100755
--- a/tools/hs_diag.py
+++ b/tools/hs_diag.py
@@ -58,6 +58,9 @@ items = [
# Need token , ["Capability", baseUrl + "_matrix/client/r0/capabilities", True]
# Need token , ["Media config", baseUrl + "_matrix/media/r0/config", True]
# Need token , ["Turn", baseUrl + "_matrix/client/r0/voip/turnServer", True]
+
+ # Only for Synapse
+ , ["Synapse version", baseUrl + "_synapse/admin/v1/server_version", True]
]
for item in items:
From fb19d6b83cd84412e9c6167a7c702806b4f50e6a Mon Sep 17 00:00:00 2001
From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com>
Date: Thu, 5 May 2022 14:35:54 +0100
Subject: [PATCH 4/9] Try ensuring public_baseurl set correctly.
---
.github/workflows/nightly.yml | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 961e130afe..40fbac2bf5 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -43,11 +43,12 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Start synapse server
- uses: michaelkaye/setup-matrix-synapse@v1.0.2
+ uses: michaelkaye/setup-matrix-synapse@v1.0.3
with:
uploadLogs: true
httpPort: 8080
disableRateLimiting: true
+ public_baseurl: "http://10.0.2.2:8080/"
# 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
@@ -230,11 +231,12 @@ jobs:
restore-keys: |
${{ runner.os }}-gradle-
- name: Start synapse server
- uses: michaelkaye/setup-matrix-synapse@v1.0.2
+ uses: michaelkaye/setup-matrix-synapse@v1.0.3
with:
uploadLogs: true
httpPort: 8080
disableRateLimiting: true
+ public_baseurl: "http://10.0.2.2:8080/"
- uses: actions/setup-java@v3
with:
distribution: 'adopt'
From bf8b534c82e3b19166b5f81913e8626417de142f Mon Sep 17 00:00:00 2001
From: Benoit Marty
Date: Fri, 6 May 2022 15:31:58 +0200
Subject: [PATCH 5/9] Dependabot PR assign to the reviewers team
---
.github/dependabot.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 0573461e7a..5c18ac4087 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -19,6 +19,6 @@ updates:
interval: "daily"
open-pull-requests-limit: 200
reviewers:
- - "bmarty"
+ - "vector-im/element-android-reviewers"
ignore:
- dependency-name: com.google.zxing:core
From 0138341486846115f134e68ed3ca96ff1c239bbd Mon Sep 17 00:00:00 2001
From: Benoit Marty
Date: Fri, 6 May 2022 15:34:26 +0200
Subject: [PATCH 6/9] Also assign reviewers for the github-actions update
---
.github/dependabot.yml | 2 ++
1 file changed, 2 insertions(+)
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index 5c18ac4087..b6746c77d3 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -10,6 +10,8 @@ updates:
directory: "/"
schedule:
interval: "weekly"
+ reviewers:
+ - "vector-im/element-android-reviewers"
ignore:
- dependency-name: "*github-script*"
# Updates for Gradle dependencies used in the app
From 3f56dad1eb31ad97cf1b08579ca47abceeafe0e8 Mon Sep 17 00:00:00 2001
From: Marcel <34819524+MarcelCoding@users.noreply.github.com>
Date: Fri, 6 May 2022 18:23:58 +0200
Subject: [PATCH 7/9] Fixed dependabot
---
build.gradle | 3 ++-
library/jsonviewer/build.gradle | 2 +-
matrix-sdk-android/build.gradle | 2 +-
3 files changed, 4 insertions(+), 3 deletions(-)
diff --git a/build.gradle b/build.gradle
index 1d86f482da..badc1da569 100644
--- a/build.gradle
+++ b/build.gradle
@@ -47,7 +47,8 @@ allprojects {
apply plugin: "org.jlleitschuh.gradle.ktlint"
repositories {
- mavenCentral {
+ maven {
+ url 'https://repo1.maven.org/maven2'
content {
groups.mavenCentral.regex.each { includeGroupByRegex it }
groups.mavenCentral.group.each { includeGroup it }
diff --git a/library/jsonviewer/build.gradle b/library/jsonviewer/build.gradle
index 0cad8ac171..d5486911bc 100644
--- a/library/jsonviewer/build.gradle
+++ b/library/jsonviewer/build.gradle
@@ -7,7 +7,7 @@ apply plugin: 'com.jakewharton.butterknife'
buildscript {
repositories {
google()
- mavenCentral()
+ maven { url 'https://repo1.maven.org/maven2' }
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
diff --git a/matrix-sdk-android/build.gradle b/matrix-sdk-android/build.gradle
index 65824476a0..f0a8e33124 100644
--- a/matrix-sdk-android/build.gradle
+++ b/matrix-sdk-android/build.gradle
@@ -7,7 +7,7 @@ apply plugin: "org.jetbrains.dokka"
buildscript {
repositories {
- mavenCentral()
+ maven { url 'https://repo1.maven.org/maven2' }
}
dependencies {
classpath "io.realm:realm-gradle-plugin:10.9.0"
From 39c2b08065f40228bc03e10ab96ea3aac60871e0 Mon Sep 17 00:00:00 2001
From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com>
Date: Mon, 9 May 2022 14:49:34 +0100
Subject: [PATCH 8/9] Run the PR test after merge and report to channel if it
fails (#5962)
* Fork sonarqube run into a nightly build, report failures back to channel.
* Each PR triggers a build after merge, report failures back to channel.
---
.../workflows/{nightly.yml => post-pr.yml} | 73 +++++++----------
.github/workflows/sonarqube.yml | 81 +++++++++++++++++++
2 files changed, 112 insertions(+), 42 deletions(-)
rename .github/workflows/{nightly.yml => post-pr.yml} (85%)
create mode 100644 .github/workflows/sonarqube.yml
diff --git a/.github/workflows/nightly.yml b/.github/workflows/post-pr.yml
similarity index 85%
rename from .github/workflows/nightly.yml
rename to .github/workflows/post-pr.yml
index 40fbac2bf5..c4302af99f 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/post-pr.yml
@@ -1,28 +1,43 @@
-name: Nightly Tests
+name: Integration Tests
+
+# This runs for all closed pull requests against main, including those closed without merge.
+# Further filtering occurs in 'should-i-run'
on:
- push:
- branches: [ release/* ]
- schedule:
- # At 20:00 every day UTC
- - cron: '0 20 * * *'
- workflow_dispatch:
+ pull-request:
+ types: [closed]
+ branches: [develop]
# Enrich gradle.properties for CI/CD
env:
CI_GRADLE_ARG_PROPERTIES: >
-Porg.gradle.jvmargs=-Xmx4g
-Porg.gradle.parallel=false
+
jobs:
+
+ # More info on should-i-run:
+ # If this fails to run (the IF doesn't complete) then the needs will not be satisfied for any of the
+ # other jobs below, so none will run.
+ # except for the notification job at the bottom which will run all the time, unless should-i-run isn't
+ # successful, or all the other jobs have succeeded
+
+ should-i-run:
+ name: Check if PR is suitable for analysis
+ runs-on: ubuntu-latest
+ if: github.event.merged # Additionally require PR to have been completely merged.
+ steps:
+ - run: echo "Run those tests!" # no-op success
+
# Run Android Tests
integration-tests:
name: Matrix SDK - Running Integration Tests
+ needs: should-i-run
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
api-level: [ 28 ]
- # No concurrency required, runs every time on a schedule.
steps:
- uses: actions/checkout@v3
- uses: gradle/wrapper-validation-action@v1
@@ -210,6 +225,7 @@ jobs:
ui-tests:
name: UI Tests (Synapse)
+ needs: should-i-run
runs-on: macos-latest
strategy:
fail-fast: false
@@ -268,6 +284,7 @@ jobs:
codecov-units:
name: Unit tests with code coverage
+ needs: should-i-run
runs-on: macos-latest
steps:
- uses: actions/checkout@v3
@@ -292,49 +309,21 @@ jobs:
path: |
build/reports/jacoco/allCodeCoverageReport/allCodeCoverageReport.xml
- sonarqube:
- name: Sonarqube upload
- runs-on: macos-latest
- if: always() && github.event_name == 'schedule'
- needs:
- - codecov-units
- steps:
- - uses: actions/checkout@v3
- - uses: actions/setup-java@v3
- with:
- distribution: 'adopt'
- java-version: '11'
- - uses: actions/cache@v3
- with:
- path: |
- ~/.gradle/caches
- ~/.gradle/wrapper
- key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
- restore-keys: |
- ${{ runner.os }}-gradle-
- - uses: actions/download-artifact@v3
- with:
- name: codecov-xml # will restore to allCodeCoverageReport.xml by default; we restore to the same location in following tasks
- - run: mkdir -p build/reports/jacoco/allCodeCoverageReport/
- - run: mv allCodeCoverageReport.xml build/reports/jacoco/allCodeCoverageReport/
- - run: ./gradlew sonarqube $CI_GRADLE_ARG_PROPERTIES
- env:
- ORG_GRADLE_PROJECT_SONAR_LOGIN: ${{ secrets.SONAR_TOKEN }}
-
-# Notify the channel about scheduled runs, or pushes to the release branches, do not notify for manually triggered runs
+# Notify the channel about delayed failures
notify:
name: Notify matrix
runs-on: ubuntu-latest
needs:
+ - should-i-run
- integration-tests
- ui-tests
- - sonarqube
- if: always() && github.event_name != 'workflow_dispatch'
+ - codecov-units
+ if: always() && needs.should-i-run.status == "success" && (needs.codecov-units.status != "success" || needs.ui-tests.status != "success" || needs.integration-tests.status != "success")
# No concurrency required, runs every time on a schedule.
steps:
- uses: michaelkaye/matrix-hookshot-action@v1.0.0
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
hookshot_url: ${{ secrets.ELEMENT_ANDROID_HOOKSHOT_URL }}
- text_template: "{{#if '${{ github.event_name == 'schedule' }}' }}Nightly test run{{else}}Test run (on ${{ github.ref }}){{/if }}: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
- html_template: "{{#if '${{ github.event_name == 'schedule' }}' }}Nightly test run{{else}}Test run (on ${{ github.ref }}){{/if }}: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{icon conclusion}} {{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
+ text_template: "Post-merge validation of ${{ github.head_ref }} into ${{ github.base_ref }} by ${{ github.event.merged_by }} failed: {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
+ html_template: "Post-merge validation of ${{ github.head_ref }} into ${{ github.base_ref }} by ${{ github.event..merged_by }} failed: {{#each job_statuses }}{{#with this }}{{#if completed }}
{{icon conclusion}} {{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml
new file mode 100644
index 0000000000..ea4c3d594b
--- /dev/null
+++ b/.github/workflows/sonarqube.yml
@@ -0,0 +1,81 @@
+name: Sonarqube nightly
+
+on:
+ schedule:
+ - cron: '0 20 * * *'
+
+# Enrich gradle.properties for CI/CD
+env:
+ CI_GRADLE_ARG_PROPERTIES: >
+ -Porg.gradle.jvmargs=-Xmx4g
+ -Porg.gradle.parallel=false
+jobs:
+ codecov-units:
+ name: Unit tests with code coverage
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: 'adopt'
+ java-version: '11'
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+ - run: ./gradlew allCodeCoverageReport $CI_GRADLE_ARG_PROPERTIES
+ - name: Upload Codecov data
+ uses: actions/upload-artifact@v3
+ if: always()
+ with:
+ name: codecov-xml
+ path: |
+ build/reports/jacoco/allCodeCoverageReport/allCodeCoverageReport.xml
+
+ sonarqube:
+ name: Sonarqube upload
+ runs-on: ubuntu-latest
+ needs:
+ - codecov-units
+ steps:
+ - uses: actions/checkout@v3
+ - uses: actions/setup-java@v3
+ with:
+ distribution: 'adopt'
+ java-version: '11'
+ - uses: actions/cache@v3
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }}
+ restore-keys: |
+ ${{ runner.os }}-gradle-
+ - uses: actions/download-artifact@v3
+ with:
+ name: codecov-xml # will restore to allCodeCoverageReport.xml by default; we restore to the same location in following tasks
+ - run: mkdir -p build/reports/jacoco/allCodeCoverageReport/
+ - run: mv allCodeCoverageReport.xml build/reports/jacoco/allCodeCoverageReport/
+ - run: ./gradlew sonarqube $CI_GRADLE_ARG_PROPERTIES
+ env:
+ ORG_GRADLE_PROJECT_SONAR_LOGIN: ${{ secrets.SONAR_TOKEN }}
+
+# Notify the channel about sonarqube failures
+ notify:
+ name: Notify matrix
+ runs-on: ubuntu-latest
+ needs:
+ - sonarqube
+ - codecov-units
+ if: always() && (needs.sonarqube.result != "success" || needs.codecov-units.result != "success")
+ steps:
+ - uses: michaelkaye/matrix-hookshot-action@v1.0.0
+ with:
+ github_token: ${{ secrets.GITHUB_TOKEN }}
+ hookshot_url: ${{ secrets.ELEMENT_ANDROID_HOOKSHOT_URL }}
+ text_template: "Sonarqube run (on ${{ github.ref }}): {{#each job_statuses }}{{#with this }}{{#if completed }} {{name}} {{conclusion}} at {{completed_at}}, {{/if}}{{/with}}{{/each}}"
+ html_template: "Sonarqube run (on ${{ github.ref }}): {{#each job_statuses }}{{#with this }}{{#if completed }}
{{icon conclusion}} {{name}} {{conclusion}} at {{completed_at}} [details]{{/if}}{{/with}}{{/each}}"
From 5bf35f093797763001f34bbc45ecc1aebb7f4cc3 Mon Sep 17 00:00:00 2001
From: Michael Kaye <1917473+michaelkaye@users.noreply.github.com>
Date: Mon, 9 May 2022 15:02:30 +0100
Subject: [PATCH 9/9] noop change to test build system
---
docs/ui-tests.md | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/docs/ui-tests.md b/docs/ui-tests.md
index 05eb50f525..316c724262 100644
--- a/docs/ui-tests.md
+++ b/docs/ui-tests.md
@@ -176,4 +176,6 @@ class SettingsAdvancedRobot {
clickOn(R.string.settings_developer_mode_summary)
}
}
-```
\ No newline at end of file
+```
+
+