artifacts/script/offline-fluxcd/pull-and-export-images.sh
2025-10-02 20:49:18 +08:00

25 lines
761 B
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
: "${CHART_VERSION?CHART_VERSION is required}"
: "${MATRIX_ARCH?MATRIX_ARCH is required}"
PLATFORM="linux/${MATRIX_ARCH}"
helm template flux fluxcd-community/flux2 --version "${CHART_VERSION}" > manifest.yaml
mapfile -t images < <(grep -oP 'image:\s*"?\K([^"\s]+)' manifest.yaml | sort -u || true)
rm -f manifest.yaml
for img in "${images[@]}"; do
[[ -n "$img" ]] || continue
if [[ "$img" == *"{{"* ]]; then
continue
fi
echo "Pulling $img for ${PLATFORM}"
if ! docker pull --platform "${PLATFORM}" "$img"; then
echo "::warning::Failed to pull $img for ${PLATFORM}, skipping" >&2
continue
fi
safe=$(echo "$img" | tr '/:' '-_')
docker save "$img" -o "offline-installer/images/${safe}.tar"
done