52 lines
1.2 KiB
Bash
Executable File
52 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euxo pipefail
|
|
|
|
if [[ -z "${DOCKER_REPO}" ]]; then
|
|
echo "environment variable not set: DOCKER_REPO" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "${DOMAIN}" ]]; then
|
|
echo "environment variable not set: DOMAIN" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "${DEPLOY_SSH_PRIVATE_KEY}" ]]; then
|
|
echo "environment variable not set: DEPLOY_SSH_PRIVATE_KEY" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -f "${DEPLOY_SSH_PRIVATE_KEY}" ]]; then
|
|
DEPLOY_SSH_PRIVATE_KEY="$(< "${DEPLOY_SSH_PRIVATE_KEY}")"
|
|
fi
|
|
|
|
DEPLOY_SSH_PRIVATE_KEY="$(printf '%s\n' "${DEPLOY_SSH_PRIVATE_KEY}" | base64 -d)"
|
|
|
|
tag="$(date +%s%3N)-$(git branch --show-current)-$(git rev-parse @)"
|
|
|
|
if [[ -n "$(git status --porcelain)" ]]; then
|
|
tag="${tag}-dirty"
|
|
fi
|
|
|
|
scripts/docker.bash tag riju:prod "${DOCKER_REPO}:${tag}"
|
|
scripts/docker.bash push "${DOCKER_REPO}:${tag}"
|
|
|
|
tmpdir="$(mktemp -d)"
|
|
|
|
function cleanup {
|
|
rm -rf "${tmpdir}"
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
printf '%s' "${DEPLOY_SSH_PRIVATE_KEY}" > "${tmpdir}/id"
|
|
|
|
chmod go-rw "${tmpdir}/id"
|
|
ssh -o IdentitiesOnly=yes \
|
|
-o StrictHostKeyChecking=no \
|
|
-o UserKnownHostsFile=/dev/null \
|
|
-o LogLevel=QUIET \
|
|
-i "${tmpdir}/id" "deploy@${DOMAIN}" \
|
|
deploy "${tag}"
|