name: Deploy Remont Site # Автосборка сайта remont.digital-home.site из заметок «Ремонт квартира». # Триггер — пуш в эту папку. Сайт генерируется внутри docker build (node → nginx), # поэтому раннеру нужны только docker + git (как в jam-looper). on: push: branches: [master, main] paths: - 'Ремонт квартира/**' jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v4 - name: Собрать образ run: | # ascii-контекст (путь с кириллицей и пробелом → в простой каталог) rm -rf /tmp/remont-ctx cp -r "Ремонт квартира" /tmp/remont-ctx docker build -t remont-web:latest -f /tmp/remont-ctx/.site/Dockerfile /tmp/remont-ctx echo "✅ Образ собран" - name: Перезапустить контейнер run: | docker rm -f remont-web >/dev/null 2>&1 || true docker run -d --name remont-web --restart unless-stopped \ --network coolify \ --label traefik.enable=true \ --label "traefik.http.routers.remont-http.rule=Host(\`remont.digital-home.site\`)" \ --label traefik.http.routers.remont-http.entrypoints=http \ --label traefik.http.routers.remont-http.middlewares=remont-redirect \ --label traefik.http.middlewares.remont-redirect.redirectscheme.scheme=https \ --label "traefik.http.routers.remont-https.rule=Host(\`remont.digital-home.site\`)" \ --label traefik.http.routers.remont-https.entrypoints=https \ --label traefik.http.routers.remont-https.tls=true \ --label traefik.http.routers.remont-https.tls.certresolver=letsencrypt \ --label traefik.http.routers.remont-https.service=remont \ --label traefik.http.services.remont.loadbalancer.server.port=80 \ remont-web:latest - name: Проверить, что сайт жив run: | for i in $(seq 1 10); do code=$(curl -s -o /dev/null -w '%{http_code}' https://remont.digital-home.site/ || echo 000) if [ "$code" = "200" ]; then echo "✅ https://remont.digital-home.site отвечает 200" exit 0 fi sleep 4 done echo "❌ Сайт отвечает $code" docker logs remont-web --tail 30 exit 1