8e766b540e
- sites.yml — единый источник истины для всех сайтов - generate-configs.sh — генератор nginx конфигов, certbot domains.txt, .env - nginx: per-domain HTTPS (вместо all-or-nothing switch-config) - certbot: единый renew-all.sh, динамический init (без 5 дублирующих скриптов) - backup: контейнер с pg_dump + rclone (Яндекс.Диск), ежедневно в 3AM - Gitea + Gitea Runner в docker-compose (self-hosted Git + CI/CD) - .gitea/workflows/deploy.yml — CI/CD pipeline: push → авто-деплой - Makefile: generate-configs, reconfig, deploy, backup, restore, gitea, help
53 lines
1.9 KiB
YAML
53 lines
1.9 KiB
YAML
name: Deploy
|
|
on:
|
|
push:
|
|
branches: [main]
|
|
paths:
|
|
- 'main_dc/**'
|
|
|
|
jobs:
|
|
deploy:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
|
|
- name: Deploy
|
|
run: |
|
|
cd /home/gaziz/artefacts/tp/main_dc
|
|
git pull origin main
|
|
|
|
# Если изменился sites.yml — генерируем конфиги
|
|
if git diff --name-only HEAD~1 HEAD | grep -q 'main_dc/sites.yml'; then
|
|
echo "→ sites.yml changed, generating configs..."
|
|
bash generate-configs.sh
|
|
fi
|
|
|
|
# Авто-детект и пересборка изменённых сервисов
|
|
echo "→ Detecting changed services..."
|
|
CHANGED=$(git diff --name-only HEAD~1 HEAD | grep -oP 'main_dc/\K[^/]+' | sort -u)
|
|
for svc in $CHANGED; do
|
|
svc_name="$svc"
|
|
# маппинг директорий на имена compose-сервисов
|
|
case "$svc" in
|
|
BB) svc_name="api_bb" ;;
|
|
valitovgaziz) svc_name="valitovgaziz" ;;
|
|
nginx|certbot|backup|gitea) svc_name="$svc" ;;
|
|
api_bb|api_yal|analytics|db) svc_name="$svc" ;;
|
|
yalarba) svc_name="yalarba" ;;
|
|
*) svc_name="" ;;
|
|
esac
|
|
if [ -n "$svc_name" ] && grep -q "^ $svc_name:" docker-compose.yml; then
|
|
echo " → Rebuilding $svc_name..."
|
|
make stop_$svc_name build_$svc_name start_$svc_name || \
|
|
make stop_$svc build_$svc start_$svc 2>/dev/null || \
|
|
true
|
|
fi
|
|
done
|
|
|
|
# Nginx всегда перезапускаем если изменились конфиги
|
|
if echo "$CHANGED" | grep -q 'nginx\|sites.yml'; then
|
|
echo " → Reloading nginx..."
|
|
docker compose exec -T nginx nginx -s reload 2>/dev/null || \
|
|
docker compose restart nginx
|
|
fi
|