mirror of
https://github.com/bitnami/minideb.git
synced 2026-06-04 10:13:55 +08:00
76e2a0a4a3
Signed-off-by: Carlos Rodriguez Hernandez <carlosrh@vmware.com>
89 lines
2.0 KiB
Bash
Executable File
89 lines
2.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -e
|
|
set -u
|
|
set -o pipefail
|
|
|
|
DISTS=${DISTS:-"buster
|
|
bullseye
|
|
latest
|
|
"}
|
|
|
|
DISTS_WITH_SNAPSHOT=${DISTS_WITH_SNAPSHOT:-bullseye}
|
|
BASENAME=bitnami/minideb
|
|
GCR_BASENAME=gcr.io/bitnami-containers/minideb
|
|
PLATFORMS=${PLATFORMS:-amd64 arm64}
|
|
DRY_RUN=${DRY_RUN:-}
|
|
SNAPSHOT_ID=${SNAPSHOT_ID:-}
|
|
read -r -a ARCHS <<<"$PLATFORMS"
|
|
|
|
run_docker() {
|
|
if [[ -n "${DRY_RUN:-}" ]]; then
|
|
echo "DRY RUN docker ${*}"
|
|
else
|
|
docker "$@"
|
|
fi
|
|
}
|
|
|
|
list_includes() {
|
|
local list=""
|
|
local element=""
|
|
list=${1?You must provide a list}
|
|
element=${2:?You must provide an element}
|
|
for candidate in $list; do
|
|
if [[ "$candidate" == "$element" ]]; then
|
|
true
|
|
return
|
|
fi
|
|
done
|
|
false
|
|
return
|
|
}
|
|
|
|
if [ -n "${DOCKER_PASSWORD:-}" ]; then
|
|
echo "$DOCKER_PASSWORD" | run_docker login -u "$DOCKER_USERNAME" --password-stdin
|
|
fi
|
|
|
|
if [ -n "${GCR_KEY:-}" ]; then
|
|
gcloud auth activate-service-account "$GCR_EMAIL" --key-file <(echo "$GCR_KEY")
|
|
gcloud auth print-access-token | run_docker login -u oauth2accesstoken --password-stdin gcr.io
|
|
elif [ -n "${GCR_TOKEN:-}" ]; then
|
|
echo "${GCR_TOKEN:-}" | run_docker login -u oauth2accesstoken --password-stdin gcr.io
|
|
fi
|
|
|
|
push_manifest() {
|
|
local image=""
|
|
local archs=""
|
|
image="${1:?You must provide the image base to publish}"
|
|
archs=("${@:2}")
|
|
local arch_images=()
|
|
for arch in "${archs[@]}"; do
|
|
arch_images+=("$image-$arch")
|
|
done
|
|
run_docker manifest create "$image" "${arch_images[@]}"
|
|
run_docker manifest push "$image"
|
|
}
|
|
|
|
tags=()
|
|
|
|
for DIST in $DISTS; do
|
|
tags+=("$DIST")
|
|
if list_includes "$DISTS_WITH_SNAPSHOT" "$DIST" ; then
|
|
tags+=("$DIST-snapshot-${SNAPSHOT_ID:-$(./snapshot_id)}")
|
|
fi
|
|
done
|
|
|
|
repositories=("$BASENAME")
|
|
|
|
if [[ -n "${GCR_KEY:-}" || -n "${GCR_TOKEN:-}" ]]; then
|
|
repositories+=("$GCR_BASENAME")
|
|
else
|
|
echo "Skipping repository gcr.io (empty password)"
|
|
fi
|
|
|
|
for tag in "${tags[@]}"; do
|
|
for repo in "${repositories[@]}"; do
|
|
push_manifest "$repo:$tag" "${ARCHS[@]}"
|
|
done
|
|
done
|