45 lines
1.5 KiB
Bash
Executable File
45 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
: "${INPUT_GIT_SERVER_URL:?missing INPUT_GIT_SERVER_URL}"
|
|
: "${INPUT_GIT_REPOSITORY:?missing INPUT_GIT_REPOSITORY}"
|
|
: "${INPUT_GIT_SHA:?missing INPUT_GIT_SHA}"
|
|
: "${INPUT_GIT_USER:?missing INPUT_GIT_USER}"
|
|
: "${INPUT_GIT_TOKEN:?missing INPUT_GIT_TOKEN}"
|
|
: "${INPUT_REGISTRY:?missing INPUT_REGISTRY}"
|
|
: "${INPUT_REGISTRY_USER:?missing INPUT_REGISTRY_USER}"
|
|
: "${INPUT_REGISTRY_TOKEN:?missing INPUT_REGISTRY_TOKEN}"
|
|
: "${INPUT_IMAGE_NAME:?missing INPUT_IMAGE_NAME}"
|
|
: "${INPUT_IMAGE_TAG:?missing INPUT_IMAGE_TAG}"
|
|
: "${INPUT_CONTEXT:?missing INPUT_CONTEXT}"
|
|
: "${INPUT_DOCKERFILE:?missing INPUT_DOCKERFILE}"
|
|
|
|
|
|
case "${INPUT_IMAGE_NAME}" in
|
|
*/*) ;;
|
|
*)
|
|
echo "INPUT_IMAGE_NAME must include owner/name, for example: example/testapp" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
case "${INPUT_IMAGE_NAME}" in
|
|
*.*/*|*:*/*)
|
|
echo "INPUT_IMAGE_NAME must not include a registry hostname; use INPUT_REGISTRY for that" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
workdir="${PWD}/repo"
|
|
sha_tag="${INPUT_GIT_SHA}"
|
|
latest_tag="latest"
|
|
local_image="localbuild:${INPUT_IMAGE_TAG}"
|
|
remote_image="${INPUT_REGISTRY}/${INPUT_IMAGE_NAME}:${INPUT_IMAGE_TAG}"
|
|
remote_image_sha="${INPUT_REGISTRY}/${INPUT_IMAGE_NAME}:${sha_tag}"
|
|
remote_image_latest="${INPUT_REGISTRY}/${INPUT_IMAGE_NAME}:${latest_tag}"
|
|
echo "${INPUT_REGISTRY_TOKEN}" | docker login "${INPUT_REGISTRY}" -u "${INPUT_REGISTRY_USER}" --password-stdin
|
|
docker tag "${local_image}" "${remote_image_sha}"
|
|
docker tag "${local_image}" "${remote_image_latest}"
|
|
docker push "${remote_image_sha}"
|
|
docker push "${remote_image_latest}"
|