3838 cache-dependency-path : mesh/package-lock.json
3939
4040 - name : Install Rust 1.93
41- uses : dtolnay/rust-toolchain@387aeee55b189f024a4f6d94890c5b18d73339cc
42- with :
43- toolchain : 1.93.0
41+ uses : dtolnay/rust-toolchain@d0befba8b9ddf874327619e84c39b094edd58b66 # 1.93.0
4442
4543 - name : Install Matrix test build dependencies
4644 run : |
@@ -65,29 +63,41 @@ jobs:
6563 key : ${{ runner.os }}-cargo-matrix-acceptance-${{ hashFiles('mesh/src-tauri/Cargo.lock') }}
6664 restore-keys : ${{ runner.os }}-cargo-matrix-acceptance-
6765
68- - name : Reset and start disposable homeservers
66+ - name : Run two independent federated encryption and recovery cycles
6967 working-directory : mesh
7068 shell : bash
7169 run : |
7270 set -o pipefail
7371 mkdir -p matrix-spike-logs
74- npm run setup:matrix-spike:reset 2>&1 | tee matrix-spike-logs/setup.log
75-
76- - name : Run federated encryption and recovery acceptance
77- working-directory : mesh
78- shell : bash
79- run : |
80- set -o pipefail
8172 # The app's Linux keyring backend requires a Secret Service. This
8273 # disposable, empty-password keyring exists only for the isolated
8374 # runner and is destroyed with it; no production credential is used.
84- dbus-run-session -- bash -c '
85- set -o pipefail
86- printf "\n" | gnome-keyring-daemon \
87- --unlock --components=secrets >/dev/null
88- npm run test:matrix-spike 2>&1 |
89- tee matrix-spike-logs/acceptance.log
90- '
75+ for cycle in 1 2; do
76+ npm run setup:matrix-spike:reset 2>&1 |
77+ tee "matrix-spike-logs/setup-cycle-$cycle.log"
78+ MESH_ACCEPTANCE_LOG="matrix-spike-logs/acceptance-cycle-$cycle.log" \
79+ dbus-run-session -- bash -c '
80+ set -o pipefail
81+ printf "\n" | gnome-keyring-daemon \
82+ --unlock --components=secrets >/dev/null
83+ npm run test:matrix-spike 2>&1 | tee "$MESH_ACCEPTANCE_LOG"
84+ '
85+ done
86+
87+ source_sha="$(git rev-parse HEAD)"
88+ cycle_1_sha="$(sha256sum matrix-spike-logs/acceptance-cycle-1.log | awk '{ print $1 }')"
89+ cycle_2_sha="$(sha256sum matrix-spike-logs/acceptance-cycle-2.log | awk '{ print $1 }')"
90+ printf '%s\n' \
91+ '{' \
92+ ' "schemaVersion": 1,' \
93+ " \"sourceSha\": \"$source_sha\"," \
94+ ' "status": "passed",' \
95+ ' "independentResetTestCycles": 2,' \
96+ ' "cycles": [' \
97+ " { \"iteration\": 1, \"log\": \"acceptance-cycle-1.log\", \"sha256\": \"$cycle_1_sha\" }," \
98+ " { \"iteration\": 2, \"log\": \"acceptance-cycle-2.log\", \"sha256\": \"$cycle_2_sha\" }" \
99+ ' ]' \
100+ '}' > matrix-spike-logs/acceptance-report.json
91101
92102 - name : Capture service diagnostics
93103 if : ${{ always() }}
@@ -105,7 +115,7 @@ jobs:
105115 if : ${{ always() }}
106116 uses : actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
107117 with :
108- name : matrix-federation-acceptance-${{ github.run_number }}
118+ name : matrix-federation-acceptance-${{ github.sha }}-${{ github. run_number }}
109119 path : mesh/matrix-spike-logs/
110120 if-no-files-found : error
111121 retention-days : 14
0 commit comments