chore: include docker image metadata in offline bundle manifest

This commit is contained in:
2026-03-11 12:40:54 +03:00
parent de5f5735ce
commit 1cef3f7e84

View File

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