dbmate/ci/publish-docker.sh

44 lines
1 KiB
Bash
Raw Normal View History

2021-07-22 15:19:10 -07:00
#!/bin/bash
# Tag and publish Docker image
set -euo pipefail
echo "$DOCKERHUB_TOKEN" | (set -x && docker login --username "$DOCKERHUB_USERNAME" --password-stdin)
echo "$GHCR_TOKEN" | (set -x && docker login ghcr.io --username "$GHCR_USERNAME" --password-stdin)
# Tag and push docker image
function docker_push {
src=$1
dst=$2
echo # newline
(
set -x
docker tag "$src" "$dst"
docker push "$dst"
)
}
# Publish image to both Docker Hub and GitHub Container Registry
function publish {
tag=$1
docker_push "$SRC_IMAGE" "$DOCKERHUB_IMAGE:$tag"
docker_push "$SRC_IMAGE" "$GHCR_IMAGE:$tag"
}
if [[ "$GITHUB_REF" = refs/tags/v* ]]; then
# Publish major/minor/patch/latest version tags
ver=${GITHUB_REF#refs/tags/v}
2021-07-22 15:19:10 -07:00
publish "$ver" # e.g. `1.2.3`
publish "${ver%.*}" # e.g. `1.2`
publish "${ver%%.*}" # e.g. `1`
2021-07-22 15:19:10 -07:00
publish "latest"
else
# Publish branch
publish "${GITHUB_REF##*/}"
2021-07-22 15:19:10 -07:00
fi
# Clear credentials
rm -f ~/.docker/config.json