added deploy watch, pull script. minor refactors
This commit is contained in:
30
scripts/deploy-watch.sh
Normal file
30
scripts/deploy-watch.sh
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
REPO_DIR="${REPO_DIR:-$(dirname "$SCRIPT_DIR")}"
|
||||
TRIGGER_FILE="${TRIGGER_FILE:-$REPO_DIR/deploy-trigger/redeploy.flag}"
|
||||
POLL_INTERVAL="${POLL_INTERVAL:-10}"
|
||||
# Compose service name from docker-compose.yml (not the generated image name).
|
||||
SERVICE="${SERVICE:-portfolio}"
|
||||
log() { echo "[deploy-watch] $(date -Iseconds) $*"; }
|
||||
|
||||
log "watching for $TRIGGER_FILE (repo: $REPO_DIR, service: $SERVICE, interval: ${POLL_INTERVAL}s)"
|
||||
|
||||
while true; do
|
||||
if [ -f "$TRIGGER_FILE" ]; then
|
||||
log "trigger detected, redeploying"
|
||||
rm -f "$TRIGGER_FILE"
|
||||
|
||||
# set -e is ignored inside a subshell that is part of an && / || list, so
|
||||
# each step is chained explicitly to stop at the first failure.
|
||||
(
|
||||
cd "$REPO_DIR" &&
|
||||
git pull --ff-only &&
|
||||
docker compose build "$SERVICE" &&
|
||||
docker compose up -d "$SERVICE" &&
|
||||
docker image prune -f
|
||||
) && log "redeploy complete" || log "redeploy FAILED, see output above"
|
||||
fi
|
||||
sleep "$POLL_INTERVAL"
|
||||
done
|
||||
Reference in New Issue
Block a user