Files
hops/deploy.sh
T
tanshu a7c9324170 Model the build on mozimo and target emily
- Makefile: PLATFORMS, tags :<commit> and :main, build-check with --pull.
- deploy.sh: push, guards, git pull --ff-only, optional --prune, image_tag.
- Replace .containerignore with .dockerignore.
- Add the opt-in image prune to the hops role.
- Tag the Caddyfile task so --skip-tags caddy works before DNS cutover.
- Trim comments and rewrite build and deploy text in plain prose.
2026-10-20 17:47:49 +05:30

48 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# Deploy HEAD with podman and ansible on emily. Flags: --prune keeps three old
# images, --force skips the guards. The tree must be clean and HEAD pushed.
set -euo pipefail
cd "$(dirname "${BASH_SOURCE[0]}")"
git push
FORCE=false
PRUNE=false
for arg in "$@"; do
case "$arg" in
--force) FORCE=true ;;
--prune) PRUNE=true ;;
*)
echo "Usage: $0 [--force] [--prune]" >&2
exit 1
;;
esac
done
if [ "$FORCE" != true ]; then
if [ -n "$(git status --porcelain --untracked-files=no)" ]; then
echo "x tracked files modified, commit or stash first (or --force)" >&2
exit 1
fi
git fetch origin --quiet
if [ "$(git rev-parse HEAD)" != "$(git rev-parse origin/main)" ]; then
echo "x HEAD != origin/main, push or pull first (or --force)" >&2
exit 1
fi
fi
git pull --ff-only
TAG=$(git rev-parse --short HEAD)
echo "==> deploying commit $TAG"
make build-production COMMIT="$TAG"
if [ "$PRUNE" = true ]; then
PRUNE_FLAG="-e hops_image_prune=true"
else
PRUNE_FLAG=""
fi
cd ansible
# shellcheck disable=SC2086
ansible-playbook playbook.yml -e "image_tag=$TAG" $PRUNE_FLAG