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