Merge pull request 'Update bricht nicht mehr an unversionierten Laufzeitdateien ab' (#72) from fds2610-bot/monitor:main into main
Reviewed-on: https://codeberg.org/fds2610/monitor/pulls/72
This commit is contained in:
commit
adb5af8bee
3 changed files with 30 additions and 5 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -7,3 +7,6 @@ deploy-webhook.log
|
|||
.phpunit.result.cache
|
||||
monitor-api.conf
|
||||
credentials.conf
|
||||
# Wird von check_fds.sh bei jedem Lauf aus der API neu geschrieben (Issue #70),
|
||||
# versioniert ist nur hosts-sample.conf.
|
||||
hosts.conf
|
||||
|
|
|
|||
|
|
@ -31,9 +31,11 @@ daher hier nur als Checkliste:
|
|||
|
||||
1. **Repo auskecken.** `git clone https://codeberg.org/fds2610/monitor.git` (oder per SSH,
|
||||
falls Push-Zugangsdaten fuer `git pull` als Deploy-Key/SSH-Key eingerichtet werden) nach
|
||||
z.B. `/opt/monitor`, Branch `main` ausgecheckt. Der Arbeitsbaum muss beim Update sauber
|
||||
sein - `update.sh` bricht kontrolliert ab, wenn lokale Aenderungen vorhanden sind, statt sie
|
||||
zu ueberschreiben.
|
||||
z.B. `/opt/monitor`, Branch `main` ausgecheckt. Versionierte Dateien duerfen dort nicht
|
||||
lokal veraendert werden - `update.sh` bricht kontrolliert ab, statt die Aenderungen zu
|
||||
ueberschreiben (Notausgang: `UPDATE_ALLOW_DIRTY=1`). Unversionierte Dateien neben dem Repo
|
||||
(`.env`, `hosts.conf`, `monitor-api.conf`, `credentials.conf`) stoeren dagegen nicht, sie
|
||||
bleiben beim Update unangetastet.
|
||||
2. **Docker + Docker Compose** installieren (`docker compose version` muss funktionieren).
|
||||
Der Benutzer, unter dem `deploy-webhook.py` laeuft, braucht Mitgliedschaft in der
|
||||
`docker`-Gruppe (oder aequivalente Rechte), um `docker compose` ohne `sudo` aufzurufen.
|
||||
|
|
|
|||
24
update.sh
24
update.sh
|
|
@ -10,6 +10,8 @@
|
|||
# UPDATE_REMOTE - Git-Remote, aus dem geholt wird (Default: origin)
|
||||
# UPDATE_BRANCH - Branch, der aktualisiert wird (Default: aktuell ausgecheckter Branch)
|
||||
# UPDATE_RUN_TESTS - "0" setzen, um die Testsuiten nach dem Update zu ueberspringen (Default: 1)
|
||||
# UPDATE_ALLOW_DIRTY - "1" setzen, um auch bei lokalen Aenderungen an versionierten Dateien
|
||||
# weiterzumachen (Default: 0, d.h. kontrollierter Abbruch)
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
|
|
@ -33,9 +35,27 @@ git -C "$REPO_DIR" rev-parse --is-inside-work-tree >/dev/null 2>&1 \
|
|||
UPDATE_REMOTE="${UPDATE_REMOTE:-origin}"
|
||||
UPDATE_BRANCH="${UPDATE_BRANCH:-$(git rev-parse --abbrev-ref HEAD)}"
|
||||
UPDATE_RUN_TESTS="${UPDATE_RUN_TESTS:-1}"
|
||||
UPDATE_ALLOW_DIRTY="${UPDATE_ALLOW_DIRTY:-0}"
|
||||
|
||||
if [ -n "$(git status --porcelain)" ]; then
|
||||
fail "Lokale Aenderungen/unversionierte Dateien vorhanden - bitte erst committen/stashen. Breche ab, um nichts zu ueberschreiben."
|
||||
# Unversionierte Dateien blockieren das Update bewusst NICHT: neben dem Repo liegen auf einem
|
||||
# Produktionsserver Laufzeit-/Konfigurationsdateien (hosts.conf, monitor-api.conf, ...), die
|
||||
# beim ff-only-Pull ohnehin unangetastet bleiben - stuende eine davon einem neuen Commit im
|
||||
# Weg, bricht git selbst kontrolliert ab. Blockierend sind nur Aenderungen an versionierten
|
||||
# Dateien, weil der Pull die verlieren koennte.
|
||||
DIRTY_TRACKED="$(git status --porcelain --untracked-files=no)"
|
||||
if [ -n "$DIRTY_TRACKED" ]; then
|
||||
printf '%s\n' "$DIRTY_TRACKED" >&2
|
||||
if [ "$UPDATE_ALLOW_DIRTY" = "1" ]; then
|
||||
log "Warnung: lokale Aenderungen an versionierten Dateien (siehe oben), UPDATE_ALLOW_DIRTY=1 - fahre trotzdem fort."
|
||||
else
|
||||
fail "Lokale Aenderungen an versionierten Dateien (siehe oben) - bitte erst committen/stashen (oder UPDATE_ALLOW_DIRTY=1 setzen). Breche ab, um nichts zu ueberschreiben."
|
||||
fi
|
||||
fi
|
||||
|
||||
UNTRACKED="$(git ls-files --others --exclude-standard)"
|
||||
if [ -n "$UNTRACKED" ]; then
|
||||
log "Hinweis: unversionierte Dateien im Arbeitsbaum, sie bleiben unveraendert:"
|
||||
printf '%s\n' "$UNTRACKED" | sed 's/^/ /'
|
||||
fi
|
||||
|
||||
log "Hole Aenderungen von ${UPDATE_REMOTE}/${UPDATE_BRANCH}..."
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue