#!/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}"