ci / api / api (push) Successful in 52s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 1m9s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m35s
release / release (версия и заметки) (push) Successful in 5s
release / android (APK в релиз) (push) Successful in 4m6s
ci / db / db (push) Successful in 1m15s
ci / docker / docker (образы собираются — их сервер собирает сам при обновлении) (push) Successful in 1m19s
ci / ts / ts (packages + web) (push) Successful in 2m34s
release / desktop (Linux и Windows в релиз) (push) Successful in 14m27s
release / prune (старые файлы и прогоны) (push) Successful in 6s
23 lines
840 B
Bash
23 lines
840 B
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
cd "$(dirname "$0")"
|
|
# Share a lock with manual deployments and config application.
|
|
if [ ! -f .management.lock ]; then (umask 022; : > .management.lock); fi
|
|
exec 9<.management.lock
|
|
flock -n 9 || { echo 'Another deployment is running' >&2; exit 1; }
|
|
touch config.local
|
|
compose() { docker compose --env-file config.local --env-file .env "$@"; }
|
|
# Validate before stopping any container.
|
|
compose config --quiet
|
|
compose up -d --force-recreate --remove-orphans
|
|
echo '→ ждём готовности api'
|
|
for _ in $(seq 1 90); do
|
|
if compose exec -T nginx wget -qO- http://127.0.0.1/readyz >/dev/null 2>&1; then
|
|
echo 'Конфигурация применена; API готов'
|
|
exit 0
|
|
fi
|
|
sleep 2
|
|
done
|
|
echo 'API не стал готов: проверьте docker compose logs api' >&2
|
|
exit 1
|