feat: CI/CD, per-domain HTTPS, backup, config generator
- 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
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
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
|
||||
Reference in New Issue
Block a user