From aa958758b7818defa3a12e1d4061e984d4b7846d Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Wed, 5 Aug 2026 13:26:05 +0800 Subject: [PATCH] Install missing CI toolchain packages --- .gitea/workflows/backend-quality-gate.yml | 24 ++++++++++--------- .../tests/staging-backend-workflows.test.ts | 8 +++++-- 2 files changed, 19 insertions(+), 13 deletions(-) diff --git a/.gitea/workflows/backend-quality-gate.yml b/.gitea/workflows/backend-quality-gate.yml index 71beb9e8..434f97ba 100644 --- a/.gitea/workflows/backend-quality-gate.yml +++ b/.gitea/workflows/backend-quality-gate.yml @@ -47,24 +47,26 @@ jobs: test "$(git rev-parse HEAD)" = "$GITEA_SHA" test -z "$(git status --porcelain --untracked-files=all)" - - name: Verify Linux runner toolchain + - name: Install and verify Linux runner toolchain run: | set -euo pipefail + packages=() + command -v node >/dev/null || packages+=(nodejs) + command -v npm >/dev/null || packages+=(npm) + if ! docker compose version --short 2>/dev/null | grep -Eq '^v?2\.'; then + packages+=(docker-compose-v2) + fi + if ((${#packages[@]})); then + apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=30 \ + -o Acquire::https::Timeout=30 update + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ + "${packages[@]}" + fi python3 --version node --version npm --version curl --version docker version - - - name: Install and verify Docker Compose v2 - run: | - set -euo pipefail - if ! docker compose version --short 2>/dev/null | grep -Eq '^v?2\.'; then - apt-get -o Acquire::Retries=3 -o Acquire::http::Timeout=30 \ - -o Acquire::https::Timeout=30 update - DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \ - docker-compose-v2 - fi docker compose version docker compose version --short | grep -Eq '^v?2\.' docker compose --help | grep -q -- '--project-name' diff --git a/frontend/tests/staging-backend-workflows.test.ts b/frontend/tests/staging-backend-workflows.test.ts index 8ac8f083..fc41ce90 100644 --- a/frontend/tests/staging-backend-workflows.test.ts +++ b/frontend/tests/staging-backend-workflows.test.ts @@ -131,8 +131,12 @@ test("Gitea quality gate validates before publishing an immutable ACR manifest", assert.equal((workflow.match(/git status --porcelain --untracked-files=all/g) ?? []).length, 2); assert.match(workflow, /python3 -m venv \.venv/); assert.match(workflow, /python -m playwright install --with-deps chromium/); - assert.match(workflow, /apt-get[\s\S]*Acquire::Retries=3[\s\S]*update/); - assert.match(workflow, /apt-get install -y --no-install-recommends[\s\S]*docker-compose-v2/); + assert.match(workflow, /command -v node[^\n]+\|\| packages\+=\(nodejs\)/); + assert.match(workflow, /command -v npm[^\n]+\|\| packages\+=\(npm\)/); + assert.match(workflow, /packages\+=\(docker-compose-v2\)/); + assert.equal((workflow.match(/Acquire::https::Timeout=30 update/g) ?? []).length, 1); + assert.match(workflow, /apt-get install -y --no-install-recommends[\s\S]*"\$\{packages\[@\]\}"/); + assert.match(workflow, /node --version[\s\S]*npm --version/); assert.match(workflow, /docker compose version --short/); assert.match(workflow, /docker compose --help \| grep -q -- '--project-name'/); assert.match(