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 @@ + + + + + +CI/CD — Gitea Actions для contracts-flask + + + + + + +

🔄 CI/CD — Gitea Actions для contracts-flask

+

Автоматическая валидация при 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 RunnerVM 5.172.178.213Выполняет джобы (systemd-сервис)
Giteagitea.services.ngcloud.ruОтправляет задачи раннеру
+ +
+ +

Текущий workflow

+ +
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. Пока делает простую проверку — в будущем можно добавить:

+ + +

⚠️ Ручной редеплой managed-сервиса (Flask) — через Nubes UI. Workflow НЕ делает редеплой автоматически — только валидацию и синхронизацию VM-части.

+ +
+ +

Как это настраивалось

+ +
+

1. Установка act_runner на 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
+
+ +
+

2. Получение токена

+

В Gitea: Репозиторий → Settings → Actions → Runners → Create new runner

+

Выдаётся токен вида 05VYZ493VK8... — он используется для регистрации.

+
+ +
+

3. Регистрация раннера

+
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). Джобы выполняются прямо на машине.

+
+ +
+

4. Генерация конфига

+
act_runner generate-config > /etc/act_runner/config.yaml
+# Важно: поправить labels → ["linux_amd64:host"]
+
+ +
+

5. Systemd-сервис

+
[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
+
+ +
+

6. Workflow-файл

+

Создать .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 репозитория.

+ +
+ +

Полезные ссылки

+ + + + diff --git a/site/templates/index.html b/site/templates/index.html index 5231737..18ad417 100644 --- a/site/templates/index.html +++ b/site/templates/index.html @@ -73,7 +73,7 @@
Nubes - Сверка договоров — LLM AI-driven Event Sourcing v1.0.180-flask + Сверка договоров — LLM AI-driven Event Sourcing v1.0.182-flask
○ Загрузка ○ Классификация