From 2e1d36bc4d052c4077014cd1024a85bcdd94952f Mon Sep 17 00:00:00 2001 From: dev Date: Wed, 23 Sep 2026 23:02:37 +0300 Subject: [PATCH] chore(deploy): exclude generated version.json from deploy dirty check --- README.md | 2 +- public/version.json | 6 +++--- scripts/deploy.sh | 8 ++++++-- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5e52d88..df71ba5 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ curl -sk https://127.0.0.1:3443/version.json # версия собранно docker compose exec app md5sum /app/server.js # совпадает с md5sum server.js ``` -Версия сборки записывается в `public/version.json` внутри образа из аргументов `GIT_COMMIT` / `GIT_COMMIT_DATE` (`build.args` в `docker-compose.yml`, подставляет `scripts/deploy.sh`) и показывается в сайдбаре админки. Файл в git не хранится (`.gitignore`), локально его обновляет хук: `cp scripts/post-commit.sh .git/hooks/post-commit`. Если `/version.json` отдаёт 404 — образ собран без аргументов версии, нужна пересборка. +Версия сборки записывается в `public/version.json` внутри образа из аргументов `GIT_COMMIT` / `GIT_COMMIT_DATE` (`build.args` в `docker-compose.yml`, подставляет `scripts/deploy.sh`) и показывается в сайдбаре админки — она всегда соответствует собранному коду, даже если файл в рабочей копии устарел. Локально файл обновляет хук: `cp scripts/post-commit.sh .git/hooks/post-commit`. Если образ собран без аргументов (`docker compose build` вместо `deploy.sh`), версия в сайдбаре будет пустой. ## Конфигурация diff --git a/public/version.json b/public/version.json index 5d6ede4..80e370c 100644 --- a/public/version.json +++ b/public/version.json @@ -1,5 +1,5 @@ { - "full": "a95af7daa76d37fbb1c4f1e6dcf19175df0a66e0", - "short": "a95af7d", - "date": "2026-09-23T22:23:38+03:00" + "full": "d943b77f585041cbb8ae8efed31cc3e326e1e140", + "short": "d943b77", + "date": "2026-09-23T23:01:36+03:00" } \ No newline at end of file diff --git a/scripts/deploy.sh b/scripts/deploy.sh index c665a4b..9f6bd18 100755 --- a/scripts/deploy.sh +++ b/scripts/deploy.sh @@ -13,7 +13,7 @@ else fi echo ">> Рабочая копия" -if [ -n "$(git status --porcelain --untracked-files=no)" ]; then +if [ -n "$(git status --porcelain --untracked-files=no -- . ':(exclude)public/version.json')" ]; then git status --short echo "Есть незакоммиченные изменения. Задайте DEPLOY_ALLOW_DIRTY=1, чтобы продолжить." [ "${DEPLOY_ALLOW_DIRTY:-0}" = "1" ] || exit 1 @@ -43,7 +43,11 @@ else fi if command -v curl >/dev/null 2>&1; then echo ">> /version.json" - curl -sk https://127.0.0.1:3443/version.json || true + for _ in $(seq 1 20); do + curl -skf --max-time 3 https://127.0.0.1:3443/version.json >/dev/null 2>&1 && break + sleep 1 + done + curl -sk --max-time 5 https://127.0.0.1:3443/version.json || echo "Не удалось получить /version.json (приложение ещё поднимается или образ собран без аргументов версии)" echo fi $DC ps