diff --git a/.gitea/workflows/backend-quality-gate.yml b/.gitea/workflows/backend-quality-gate.yml index 019a2bdd..92da8401 100644 --- a/.gitea/workflows/backend-quality-gate.yml +++ b/.gitea/workflows/backend-quality-gate.yml @@ -57,24 +57,14 @@ jobs: docker version - name: Install and verify Docker Compose v2 - env: - DOCKER_COMPOSE_VERSION: v2.39.1 run: | set -euo pipefail - case "$(uname -m)" in - x86_64) compose_arch=x86_64; compose_sha=a5ea28722d5da628b59226626f7d6c33c89a7ed19e39f750645925242044c9d2 ;; - aarch64|arm64) compose_arch=aarch64; compose_sha=7b2627ed76f7dcb0d93f649f185af912372229b4c09762a3cd1db5be5255632b ;; - *) echo "Unsupported Docker Compose architecture: $(uname -m)" >&2; exit 1 ;; - esac - compose_dir="${DOCKER_CONFIG:-$HOME/.docker}/cli-plugins" - compose_bin="$compose_dir/docker-compose" - mkdir -p "$compose_dir" - curl -fsSL --retry 3 --retry-all-errors --retry-delay 10 \ - --connect-timeout 15 --max-time 180 \ - "https://github.com/docker/compose/releases/download/$DOCKER_COMPOSE_VERSION/docker-compose-linux-$compose_arch" \ - -o "$compose_bin" - printf '%s %s\n' "$compose_sha" "$compose_bin" | sha256sum -c - - chmod +x "$compose_bin" + 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 a9afa28e..44a77927 100644 --- a/frontend/tests/staging-backend-workflows.test.ts +++ b/frontend/tests/staging-backend-workflows.test.ts @@ -131,11 +131,8 @@ 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, /DOCKER_COMPOSE_VERSION: v2\.39\.1/); - assert.match(workflow, /docker-compose-linux-\$compose_arch/); - assert.match(workflow, /curl -fsSL --retry 3 --retry-all-errors --retry-delay 10/); - assert.match(workflow, /--connect-timeout 15 --max-time 180/); - assert.match(workflow, /sha256sum -c -/); + 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, /docker compose version --short/); assert.match(workflow, /docker compose --help \| grep -q -- '--project-name'/); assert.match(