Deploy: validate s ignore pending + workflow si sám aktualizuje deploy.sh
Some checks failed
CI and deploy / migration-check (push) Successful in 5m2s
CI and deploy / deploy (push) Failing after 3m27s

deploy.sh validate selhával na nové/změněné repeatable (flyway 12: pending =
error), kterou má hned následující migrate aplikovat → -ignoreMigrationPatterns
'*:pending'. Workflow deploy step nově nejdřív resetne checkout a nainstaluje
ROOT kopii deploy.sh z repa — opravy skriptu se propagují bez ručního zásahu
na serveru (deploy.sh fetch/reset zopakuje idempotentně).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Dusan Vojacek
2026-06-11 22:45:41 +02:00
parent 4d1313a3bc
commit e7b87fbabd
2 changed files with 12 additions and 2 deletions

View File

@@ -78,7 +78,15 @@ jobs:
ls -ld /opt/ems-deploy ls -ld /opt/ems-deploy
- name: Run deploy script - name: Run deploy script
run: bash /opt/ems-deploy/deploy.sh # Nejdřív aktualizovat checkout + ROOT kopii skriptu z repa (jinak by
# opravy deploy.sh nikdy nedoputovaly na server — skript se spouští
# z /opt/ems-deploy, ne z checkoutu). deploy.sh pak fetch/reset zopakuje
# idempotentně.
run: |
git -c safe.directory=/opt/ems-deploy/app -C /opt/ems-deploy/app fetch origin
git -c safe.directory=/opt/ems-deploy/app -C /opt/ems-deploy/app reset --hard origin/main
install -m 0755 /opt/ems-deploy/app/deploy/deploy.sh /opt/ems-deploy/deploy.sh
bash /opt/ems-deploy/deploy.sh
# Alternativa: runner v Dockeru bez přístupu k hostu — odkomentovat a upravit SERVER + secrets. # Alternativa: runner v Dockeru bez přístupu k hostu — odkomentovat a upravit SERVER + secrets.
# deploy-ssh: # deploy-ssh:

View File

@@ -64,7 +64,9 @@ docker compose -f "$COMPOSE_DST" --env-file "$ENV_FILE" config >/dev/null
# Čisté `up -d` často znovu nespustí jednorázový kontejner flyway — změny jen v R__/*.sql přes migrate. # Čisté `up -d` často znovu nespustí jednorázový kontejner flyway — změny jen v R__/*.sql přes migrate.
# Při chybě je v logu celý Flyway výstup (konkrétní SQL / řádek). # Při chybě je v logu celý Flyway výstup (konkrétní SQL / řádek).
log "Flyway validate" log "Flyway validate"
docker compose -f "$COMPOSE_DST" --env-file "$ENV_FILE" run --rm flyway validate # *:pending — nové/změněné repeatables aplikuje hned následující migrate;
# bez ignore patternu flyway 12 validate selže dřív, než se k migrate dostane.
docker compose -f "$COMPOSE_DST" --env-file "$ENV_FILE" run --rm flyway validate -ignoreMigrationPatterns='*:pending'
log "Flyway migrate (docker compose run --rm flyway)" log "Flyway migrate (docker compose run --rm flyway)"
docker compose -f "$COMPOSE_DST" --env-file "$ENV_FILE" run --rm flyway migrate docker compose -f "$COMPOSE_DST" --env-file "$ENV_FILE" run --rm flyway migrate