feat: /ci-cd page with Gitea Actions setup guide v1.0.182
Deploy contracts-flask / validate (push) Successful in 0s
Deploy contracts-flask / validate (push) Successful in 0s
This commit is contained in:
@@ -0,0 +1,165 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>CI/CD — Gitea Actions для contracts-flask</title>
|
||||
<style>
|
||||
:root {
|
||||
--bg: #0d1117; --fg: #c9d1d9; --muted: #8b949e;
|
||||
--accent: #58a6ff; --green: #3fb950; --orange: #d2991d;
|
||||
--border: #30363d; --code-bg: #161b22; --card-bg: #161b22;
|
||||
}
|
||||
* { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
body { font: 15px/1.65 -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; background: var(--bg); color: var(--fg); max-width: 860px; margin: 0 auto; padding: 32px 20px 80px; }
|
||||
h1 { font-size: 26px; margin-bottom: 8px; }
|
||||
h2 { font-size: 19px; margin-top: 36px; margin-bottom: 10px; padding-bottom: 6px; border-bottom: 1px solid var(--border); color: var(--accent); }
|
||||
h3 { font-size: 16px; margin-top: 24px; margin-bottom: 6px; color: var(--green); }
|
||||
p { margin: 8px 0; }
|
||||
ul, ol { padding-left: 24px; margin: 8px 0; }
|
||||
li { margin: 4px 0; }
|
||||
code { background: var(--code-bg); padding: 1px 5px; border-radius: 4px; font-size: 13px; border: 1px solid var(--border); }
|
||||
pre { background: var(--code-bg); padding: 12px 16px; border-radius: 6px; overflow-x: auto; font-size: 13px; border: 1px solid var(--border); margin: 12px 0; }
|
||||
.nav { margin-bottom: 24px; }
|
||||
.nav a { color: var(--accent); text-decoration: none; }
|
||||
.nav a:hover { text-decoration: underline; }
|
||||
.step { background: var(--card-bg); border: 1px solid var(--border); border-radius: 8px; padding: 16px 20px; margin: 16px 0; }
|
||||
.step h3 { margin-top: 0; }
|
||||
hr { border: none; border-top: 1px solid var(--border); margin: 32px 0; }
|
||||
table { width: 100%; border-collapse: collapse; margin: 12px 0; border: 1px solid var(--border); }
|
||||
th, td { padding: 8px; text-align: left; border: 1px solid var(--border); }
|
||||
th { background: var(--code-bg); }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<div class="nav"><a href="/">← Вернуться к загрузке</a> | <a href="/architect">Архитектура</a></div>
|
||||
|
||||
<h1>🔄 CI/CD — Gitea Actions для contracts-flask</h1>
|
||||
<p style="color:var(--muted)">Автоматическая валидация при git push. Настроено 2026-06-29.</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Как это работает</h2>
|
||||
|
||||
<p>Gitea Actions — встроенный CI/CD (аналог GitHub Actions), доступен с Gitea 1.19+. При каждом <code>git push</code> в master запускается workflow, который выполняет заданные шаги на <strong>раннере</strong> — отдельной машине, которая слушает задачи.</p>
|
||||
|
||||
<table>
|
||||
<tr><th>Компонент</th><th>Где</th><th>Что делает</th></tr>
|
||||
<tr><td>Workflow-файл</td><td><code>.gitea/workflows/deploy.yaml</code></td><td>Описывает шаги (steps)</td></tr>
|
||||
<tr><td>Act Runner</td><td>VM 5.172.178.213</td><td>Выполняет джобы (systemd-сервис)</td></tr>
|
||||
<tr><td>Gitea</td><td>gitea.services.ngcloud.ru</td><td>Отправляет задачи раннеру</td></tr>
|
||||
</table>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Текущий workflow</h2>
|
||||
|
||||
<pre>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</pre>
|
||||
|
||||
<p>Workflow срабатывает при каждом пуше в master. Пока делает простую проверку — в будущем можно добавить:</p>
|
||||
<ul>
|
||||
<li>Синтаксическую проверку Python (<code>py_compile</code>)</li>
|
||||
<li>Синхронизацию кода на VM (<code>deploy/sync.sh</code>)</li>
|
||||
<li>Уведомление в Telegram о готовности к ручному редеплою</li>
|
||||
</ul>
|
||||
|
||||
<p><strong>⚠️ Ручной редеплой managed-сервиса (Flask) — через Nubes UI.</strong> Workflow НЕ делает редеплой автоматически — только валидацию и синхронизацию VM-части.</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Как это настраивалось</h2>
|
||||
|
||||
<div class="step">
|
||||
<h3>1. Установка act_runner на VM</h3>
|
||||
<pre># Скачать бинарник
|
||||
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</pre>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<h3>2. Получение токена</h3>
|
||||
<p>В Gitea: <code>Репозиторий → Settings → Actions → Runners → Create new runner</code></p>
|
||||
<p>Выдаётся токен вида <code>05VYZ493VK8...</code> — он используется для регистрации.</p>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<h3>3. Регистрация раннера</h3>
|
||||
<pre>act_runner register \
|
||||
--no-interactive \
|
||||
--instance https://gitea.services.ngcloud.ru \
|
||||
--token <TOKEN> \
|
||||
--name contracts-vm \
|
||||
--labels linux_amd64:host</pre>
|
||||
<p><code>linux_amd64:host</code> — означает host-режим (без Docker). Джобы выполняются прямо на машине.</p>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<h3>4. Генерация конфига</h3>
|
||||
<pre>act_runner generate-config > /etc/act_runner/config.yaml
|
||||
# Важно: поправить labels → ["linux_amd64:host"]</pre>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<h3>5. Systemd-сервис</h3>
|
||||
<pre>[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</pre>
|
||||
<pre>sudo systemctl daemon-reload
|
||||
sudo systemctl enable act_runner --now
|
||||
sudo systemctl status act_runner</pre>
|
||||
</div>
|
||||
|
||||
<div class="step">
|
||||
<h3>6. Workflow-файл</h3>
|
||||
<p>Создать <code>.gitea/workflows/deploy.yaml</code> в репозитории. При пуше — workflow запустится автоматически.</p>
|
||||
<p><strong>Важно:</strong> <code>runs-on</code> должен совпадать с лейблом раннера (без <code>:host</code>). То есть <code>runs-on: linux_amd64</code>.</p>
|
||||
</div>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Проверка статуса</h2>
|
||||
|
||||
<pre># Логи раннера на VM
|
||||
sudo journalctl -u act_runner -f
|
||||
|
||||
# Статус сервиса
|
||||
sudo systemctl status act_runner</pre>
|
||||
|
||||
<p>Результаты выполнения workflow видны в Gitea на вкладке <strong>Actions</strong> репозитория.</p>
|
||||
|
||||
<hr>
|
||||
|
||||
<h2>Полезные ссылки</h2>
|
||||
<ul>
|
||||
<li><a href="https://docs.gitea.com/usage/actions/overview/" target="_blank">Gitea Actions — Overview</a></li>
|
||||
<li><a href="https://docs.gitea.com/usage/actions/act-runner" target="_blank">Act Runner — документация</a></li>
|
||||
<li><a href="https://docs.gitea.com/usage/actions/quickstart/" target="_blank">Quick Start</a></li>
|
||||
</ul>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -73,7 +73,7 @@
|
||||
<body>
|
||||
<div class="topbar">
|
||||
<img src="/nubes-logo.svg" alt="Nubes">
|
||||
<span class="title">Сверка договоров — LLM AI-driven Event Sourcing <span style="font-weight:400;color:var(--muted);font-size:12px;">v1.0.180-flask</span></span>
|
||||
<span class="title">Сверка договоров — LLM AI-driven Event Sourcing <span style="font-weight:400;color:var(--muted);font-size:12px;">v1.0.182-flask</span></span>
|
||||
<div id="pipelineStepper" style="display:flex;gap:8px;font-size:11px;align-items:center;color:var(--muted);">
|
||||
<span id="stepUpload">○ Загрузка</span><span>→</span>
|
||||
<span id="stepClassify">○ Классификация</span><span>→</span>
|
||||
|
||||
Reference in New Issue
Block a user