diff --git a/site/app.py b/site/app.py index 7ef0431..e06c232 100644 --- a/site/app.py +++ b/site/app.py @@ -98,6 +98,11 @@ def architect(): return render_template("architect.html") +@app.route("/ci-cd") +def ci_cd(): + return render_template("ci-cd.html") + + @app.route("/health") def health(): return {"ok": True, "service": "contracts-flask"} diff --git a/site/templates/ci-cd.html b/site/templates/ci-cd.html new file mode 100644 index 0000000..e5dfaeb --- /dev/null +++ b/site/templates/ci-cd.html @@ -0,0 +1,165 @@ + + +
+ + +Автоматическая валидация при git push. Настроено 2026-06-29.
+ +Gitea Actions — встроенный CI/CD (аналог GitHub Actions), доступен с Gitea 1.19+. При каждом git push в master запускается workflow, который выполняет заданные шаги на раннере — отдельной машине, которая слушает задачи.
| Компонент | Где | Что делает |
|---|---|---|
| Workflow-файл | .gitea/workflows/deploy.yaml | Описывает шаги (steps) |
| Act Runner | VM 5.172.178.213 | Выполняет джобы (systemd-сервис) |
| Gitea | gitea.services.ngcloud.ru | Отправляет задачи раннеру |
name: Deploy contracts-flask +on: + push: + branches: [master] + +jobs: + validate: + runs-on: linux_amd64 + steps: + - name: Test runner + run: | + echo "✅ Runner is alive!" + python3 --version+ +
Workflow срабатывает при каждом пуше в master. Пока делает простую проверку — в будущем можно добавить:
+py_compile)deploy/sync.sh)⚠️ Ручной редеплой managed-сервиса (Flask) — через Nubes UI. Workflow НЕ делает редеплой автоматически — только валидацию и синхронизацию VM-части.
+ +# Скачать бинарник +curl -sL -o /usr/local/bin/act_runner \ + https://dl.gitea.com/act_runner/0.2.11/act_runner-0.2.11-linux-amd64 +chmod +x /usr/local/bin/act_runner+
В Gitea: Репозиторий → Settings → Actions → Runners → Create new runner
Выдаётся токен вида 05VYZ493VK8... — он используется для регистрации.
act_runner register \ + --no-interactive \ + --instance https://gitea.services.ngcloud.ru \ + --token <TOKEN> \ + --name contracts-vm \ + --labels linux_amd64:host+
linux_amd64:host — означает host-режим (без Docker). Джобы выполняются прямо на машине.
act_runner generate-config > /etc/act_runner/config.yaml +# Важно: поправить labels → ["linux_amd64:host"]+
[Unit] +Description=Gitea Actions Runner +After=network.target + +[Service] +ExecStart=/usr/local/bin/act_runner daemon --config /etc/act_runner/config.yaml +WorkingDirectory=/etc/act_runner +Restart=always +RestartSec=10 +User=naeel +Environment=HOME=/home/naeel + +[Install] +WantedBy=multi-user.target+
sudo systemctl daemon-reload +sudo systemctl enable act_runner --now +sudo systemctl status act_runner+
Создать .gitea/workflows/deploy.yaml в репозитории. При пуше — workflow запустится автоматически.
Важно: runs-on должен совпадать с лейблом раннера (без :host). То есть runs-on: linux_amd64.
# Логи раннера на VM +sudo journalctl -u act_runner -f + +# Статус сервиса +sudo systemctl status act_runner+ +
Результаты выполнения workflow видны в Gitea на вкладке Actions репозитория.
+ +