chore: include docker image metadata in offline bundle manifest
This commit is contained in:
@@ -14,6 +14,20 @@ POSTGRES_IMAGE="${POSTGRES_IMAGE:-postgres:16-alpine}"
|
||||
BACKEND_IMAGE="ss-tools-backend:${TAG}"
|
||||
FRONTEND_IMAGE="ss-tools-frontend:${TAG}"
|
||||
|
||||
get_image_id() {
|
||||
docker image inspect --format '{{.Id}}' "$1"
|
||||
}
|
||||
|
||||
get_repo_digest() {
|
||||
local digest
|
||||
digest="$(docker image inspect --format '{{join .RepoDigests ","}}' "$1" 2>/dev/null || true)"
|
||||
if [[ -n "${digest}" && "${digest}" != "<no value>" ]]; then
|
||||
printf '%s' "${digest}"
|
||||
else
|
||||
printf '%s' "unavailable"
|
||||
fi
|
||||
}
|
||||
|
||||
mkdir -p "${DIST_ROOT}"
|
||||
|
||||
cd "${PROJECT_ROOT}"
|
||||
@@ -38,16 +52,63 @@ echo "[offline-bundle] calculating checksums"
|
||||
sha256sum "backend.${TAG}.tar" "frontend.${TAG}.tar" "postgres.${TAG}.tar" > "sha256sums.${TAG}.txt"
|
||||
)
|
||||
|
||||
BACKEND_IMAGE_ID="$(get_image_id "${BACKEND_IMAGE}")"
|
||||
FRONTEND_IMAGE_ID="$(get_image_id "${FRONTEND_IMAGE}")"
|
||||
POSTGRES_IMAGE_ID="$(get_image_id "${POSTGRES_IMAGE}")"
|
||||
|
||||
BACKEND_REPO_DIGEST="$(get_repo_digest "${BACKEND_IMAGE}")"
|
||||
FRONTEND_REPO_DIGEST="$(get_repo_digest "${FRONTEND_IMAGE}")"
|
||||
POSTGRES_REPO_DIGEST="$(get_repo_digest "${POSTGRES_IMAGE}")"
|
||||
|
||||
cat > "${DIST_ROOT}/manifest.${TAG}.txt" <<EOF
|
||||
release_tag=${TAG}
|
||||
backend_image=${BACKEND_IMAGE}
|
||||
backend_image_id=${BACKEND_IMAGE_ID}
|
||||
backend_repo_digest=${BACKEND_REPO_DIGEST}
|
||||
frontend_image=${FRONTEND_IMAGE}
|
||||
frontend_image_id=${FRONTEND_IMAGE_ID}
|
||||
frontend_repo_digest=${FRONTEND_REPO_DIGEST}
|
||||
postgres_image=${POSTGRES_IMAGE}
|
||||
postgres_image_id=${POSTGRES_IMAGE_ID}
|
||||
postgres_repo_digest=${POSTGRES_REPO_DIGEST}
|
||||
compose_file=docker-compose.enterprise-clean.yml
|
||||
env_template=.env.enterprise-clean.example
|
||||
checksums_file=sha256sums.${TAG}.txt
|
||||
generated_at_utc=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
|
||||
EOF
|
||||
|
||||
cat > "${DIST_ROOT}/manifest.${TAG}.json" <<EOF
|
||||
{
|
||||
"release_tag": "${TAG}",
|
||||
"images": [
|
||||
{
|
||||
"role": "backend",
|
||||
"image": "${BACKEND_IMAGE}",
|
||||
"image_id": "${BACKEND_IMAGE_ID}",
|
||||
"repo_digest": "${BACKEND_REPO_DIGEST}",
|
||||
"archive": "backend.${TAG}.tar"
|
||||
},
|
||||
{
|
||||
"role": "frontend",
|
||||
"image": "${FRONTEND_IMAGE}",
|
||||
"image_id": "${FRONTEND_IMAGE_ID}",
|
||||
"repo_digest": "${FRONTEND_REPO_DIGEST}",
|
||||
"archive": "frontend.${TAG}.tar"
|
||||
},
|
||||
{
|
||||
"role": "postgres",
|
||||
"image": "${POSTGRES_IMAGE}",
|
||||
"image_id": "${POSTGRES_IMAGE_ID}",
|
||||
"repo_digest": "${POSTGRES_REPO_DIGEST}",
|
||||
"archive": "postgres.${TAG}.tar"
|
||||
}
|
||||
],
|
||||
"compose_file": "docker-compose.enterprise-clean.yml",
|
||||
"env_template": ".env.enterprise-clean.example",
|
||||
"checksums_file": "sha256sums.${TAG}.txt"
|
||||
}
|
||||
EOF
|
||||
|
||||
cp "${PROJECT_ROOT}/docker-compose.enterprise-clean.yml" "${DIST_ROOT}/docker-compose.enterprise-clean.yml"
|
||||
cp "${PROJECT_ROOT}/.env.enterprise-clean.example" "${DIST_ROOT}/.env.enterprise-clean.example"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user