From 0f14da262310c353ddb482a78fb01472d8fa92ff Mon Sep 17 00:00:00 2001 From: cloudneutral Date: Thu, 4 Dec 2025 19:48:46 +0800 Subject: [PATCH] Extract base image preparation script (#748) --- .github/scripts/prepare-base-image-refs.sh | 34 ++++++++++++++++++++++ .github/workflows/build-service-images.yml | 13 +++++---- 2 files changed, 42 insertions(+), 5 deletions(-) create mode 100755 .github/scripts/prepare-base-image-refs.sh diff --git a/.github/scripts/prepare-base-image-refs.sh b/.github/scripts/prepare-base-image-refs.sh new file mode 100755 index 0000000..bdab26f --- /dev/null +++ b/.github/scripts/prepare-base-image-refs.sh @@ -0,0 +1,34 @@ +#!/usr/bin/env bash +set -euo pipefail + +REGISTRY=${REGISTRY:?REGISTRY is required} +ORG=${ORG:?ORG is required} + +declare -A IMAGES=( + [GO_RUNTIME_DIGEST]="go-runtime" + [NODE_BUILDER_DIGEST]="node-builder" + [NODE_RUNTIME_DIGEST]="node-runtime" + [OPENRESTY_GEOIP_DIGEST]="openresty-geoip" + [POSTGRES_RUNTIME_DIGEST]="postgres-runtime" +) + +write_image_ref() { + local env_name=$1 + local digest=$2 + local image=$3 + local ref + + if [[ -n "$digest" ]]; then + ref="${REGISTRY}/${ORG}/${image}@${digest}" + else + ref="${REGISTRY}/${ORG}/${image}:main" + fi + + echo "${env_name}=${ref}" >> "${GITHUB_ENV}" +} + +for digest_var in "${!IMAGES[@]}"; do + image_name=${IMAGES[${digest_var}]} + digest_value=${!digest_var-} + write_image_ref "${digest_var/_DIGEST/_IMAGE_REF}" "${digest_value}" "${image_name}" +done diff --git a/.github/workflows/build-service-images.yml b/.github/workflows/build-service-images.yml index 4784dbe..90b2add 100644 --- a/.github/workflows/build-service-images.yml +++ b/.github/workflows/build-service-images.yml @@ -101,6 +101,9 @@ jobs: - uses: docker/setup-qemu-action@v3 - uses: docker/setup-buildx-action@v3 + - name: Prepare base image references + run: ./.github/scripts/prepare-base-image-refs.sh + # ----------------------------- # Build Service Images # ----------------------------- @@ -114,11 +117,11 @@ jobs: tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} build-args: | - GO_BASE_IMAGE=${{ env.REGISTRY }}/${{ env.ORG }}/go-runtime@${{ env.GO_RUNTIME_DIGEST }} - NODE_BUILDER_IMAGE=${{ env.REGISTRY }}/${{ env.ORG }}/node-builder@${{ env.NODE_BUILDER_DIGEST }} - NODE_RUNTIME_IMAGE=${{ env.REGISTRY }}/${{ env.ORG }}/node-runtime@${{ env.NODE_RUNTIME_DIGEST }} - OPENRESTY_GEOIP_IMAGE=${{ env.REGISTRY }}/${{ env.ORG }}/openresty-geoip@${{ env.OPENRESTY_GEOIP_DIGEST }} - POSTGRES_RUNTIME_IMAGE=${{ env.REGISTRY }}/${{ env.ORG }}/postgres-runtime@${{ env.POSTGRES_RUNTIME_DIGEST }} + GO_BASE_IMAGE=${{ env.GO_RUNTIME_IMAGE_REF }} + NODE_BUILDER_IMAGE=${{ env.NODE_BUILDER_IMAGE_REF }} + NODE_RUNTIME_IMAGE=${{ env.NODE_RUNTIME_IMAGE_REF }} + OPENRESTY_GEOIP_IMAGE=${{ env.OPENRESTY_GEOIP_IMAGE_REF }} + POSTGRES_RUNTIME_IMAGE=${{ env.POSTGRES_RUNTIME_IMAGE_REF }} # ----------------------------- # SBOM