From ca4417a34543e44feb9a57603cb1caf7763b02e1 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Wed, 5 Aug 2026 12:44:40 +0800 Subject: [PATCH] Use existing registry mirror for PostgreSQL CI --- .gitea/workflows/backend-quality-gate.yml | 27 ++++++++++--------- .../tests/staging-backend-workflows.test.ts | 14 +++++++++- 2 files changed, 27 insertions(+), 14 deletions(-) diff --git a/.gitea/workflows/backend-quality-gate.yml b/.gitea/workflows/backend-quality-gate.yml index 40d61f0c..019a2bdd 100644 --- a/.gitea/workflows/backend-quality-gate.yml +++ b/.gitea/workflows/backend-quality-gate.yml @@ -81,23 +81,24 @@ jobs: - name: Preload PostgreSQL integration image env: + POSTGRES_TEST_SOURCE_IMAGE: swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/library/postgres:17-alpine POSTGRES_TEST_IMAGE: postgres:17-alpine run: | set -euo pipefail - if docker image inspect "$POSTGRES_TEST_IMAGE" >/dev/null 2>&1; then - exit 0 + if ! docker image inspect "$POSTGRES_TEST_IMAGE" >/dev/null 2>&1; then + for attempt in 1 2 3; do + if timeout 180 docker pull "$POSTGRES_TEST_SOURCE_IMAGE"; then + docker tag "$POSTGRES_TEST_SOURCE_IMAGE" "$POSTGRES_TEST_IMAGE" + break + fi + if [ "$attempt" -eq 3 ]; then + echo "Failed to preload $POSTGRES_TEST_IMAGE after $attempt attempts" >&2 + exit 1 + fi + sleep $((attempt * 15)) + done fi - for attempt in 1 2 3; do - if timeout 180 docker pull "$POSTGRES_TEST_IMAGE"; then - docker image inspect "$POSTGRES_TEST_IMAGE" >/dev/null - break - fi - if [ "$attempt" -eq 3 ]; then - echo "Failed to pull $POSTGRES_TEST_IMAGE after $attempt attempts" >&2 - exit 1 - fi - sleep $((attempt * 15)) - done + docker image inspect "$POSTGRES_TEST_IMAGE" >/dev/null - name: Install dependencies run: | diff --git a/frontend/tests/staging-backend-workflows.test.ts b/frontend/tests/staging-backend-workflows.test.ts index 19d7ad3c..a9afa28e 100644 --- a/frontend/tests/staging-backend-workflows.test.ts +++ b/frontend/tests/staging-backend-workflows.test.ts @@ -138,10 +138,22 @@ test("Gitea quality gate validates before publishing an immutable ACR manifest", assert.match(workflow, /sha256sum -c -/); assert.match(workflow, /docker compose version --short/); assert.match(workflow, /docker compose --help \| grep -q -- '--project-name'/); + assert.match( + workflow, + /POSTGRES_TEST_SOURCE_IMAGE: swr\.cn-north-4\.myhuaweicloud\.com\/ddn-k8s\/docker\.io\/library\/postgres:17-alpine/, + ); assert.match(workflow, /POSTGRES_TEST_IMAGE: postgres:17-alpine/); assert.match(workflow, /docker image inspect "\$POSTGRES_TEST_IMAGE"/); assert.match(workflow, /for attempt in 1 2 3/); - assert.match(workflow, /timeout 180 docker pull "\$POSTGRES_TEST_IMAGE"/); + assert.match( + workflow, + /timeout 180 docker pull "\$POSTGRES_TEST_SOURCE_IMAGE"/, + ); + assert.match( + workflow, + /docker tag "\$POSTGRES_TEST_SOURCE_IMAGE" "\$POSTGRES_TEST_IMAGE"/, + ); + assert.doesNotMatch(workflow, /docker pull "\$POSTGRES_TEST_IMAGE"/); assert.ok( workflow.indexOf("Preload PostgreSQL integration image") < workflow.indexOf("npm test --prefix frontend"),