From 8d46fb33d2c8314d8faa7521a1b4eb46598b124c Mon Sep 17 00:00:00 2001 From: Thore Cimbal Date: Thu, 30 Jul 2026 12:00:00 +0000 Subject: [PATCH] ci: use lockfile install instead of layered.sh, fix always-green gate layered.sh clones a branch-matching upstream matrix-js-sdk - on this fork that would override the deliberately pinned js-sdk from pnpm-lock.yaml (issue #12) with upstream develop, and it also needs jq which the node:20 job container lacks (the actual CI failure). Plain frozen-lockfile install matches the production docker build. Also replace the contains(needs.*.result, ...) gate check with explicit per-job checks: the object-filter syntax evaluated wrongly on Gitea/act, letting build-complete report success while build_ew had failed. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/build-and-test.yaml | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build-and-test.yaml b/.github/workflows/build-and-test.yaml index a2e0fde2b..e9ad89328 100644 --- a/.github/workflows/build-and-test.yaml +++ b/.github/workflows/build-and-test.yaml @@ -59,8 +59,14 @@ jobs: cache: "pnpm" node-version: "lts/*" - - name: Fetch layered build - run: scripts/layered.sh + # Upstream nutzt hier scripts/layered.sh, das eine zum Branch passende + # matrix-js-sdk-Version klont - fuer diesen Fork falsch: es wuerde den + # bewusst gepinnten js-sdk-Stand aus pnpm-lock.yaml (Issue #12) mit + # Upstream-develop ueberschreiben. Der Lockfile-Stand ist hier autoritativ, + # genau wie im Produktions-Docker-Build. (Nebenbei: layered.sh braucht jq, + # das im node:20-Job-Container fehlt.) + - name: Install dependencies + run: pnpm install --frozen-lockfile - name: Copy config working-directory: apps/web @@ -112,5 +118,11 @@ jobs: if: always() runs-on: ubuntu-latest steps: - - if: contains(needs.*.result, 'failure') || contains(needs.*.result, 'cancelled') - run: exit 1 + # Explizite Einzel-Checks statt contains(needs.*.result, ...): die + # Objekt-Filter-Syntax wertete auf Gitea/act falsch aus - das Gate war + # "success", obwohl build_ew fehlgeschlagen (und der Rest geskippt) war. + - name: Check all builds succeeded + run: | + [ "${{ needs.build_ew.result }}" = "success" ] || { echo "build_ew: ${{ needs.build_ew.result }}"; exit 1; } + [ "${{ needs.prepare_ed.result }}" = "success" ] || { echo "prepare_ed: ${{ needs.prepare_ed.result }}"; exit 1; } + [ "${{ needs.build_ed_linux.result }}" = "success" ] || { echo "build_ed_linux: ${{ needs.build_ed_linux.result }}"; exit 1; }