Extract base image preparation script (#748)

This commit is contained in:
cloudneutral 2025-12-04 19:48:46 +08:00 committed by GitHub
parent e557cc9070
commit 0f14da2623
2 changed files with 42 additions and 5 deletions

34
.github/scripts/prepare-base-image-refs.sh vendored Executable file
View File

@ -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

View File

@ -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