Files
contracts-flask/site/templates/ci-cd.html
T
naeel a1a6dbecc2
Deploy contracts-flask / validate (push) Successful in 0s
fix: remove real IPs, k8s reference, token from docs
2026-06-29 11:04:21 +04:00

166 lines
6.9 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!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</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>D0gvfu2iHfUj...</code> — он используется для регистрации.</p>
</div>
<div class="step">
<h3>3. Регистрация раннера</h3>
<pre>act_runner register \
--no-interactive \
--instance https://gitea.services.ngcloud.ru \
--token &lt;TOKEN&gt; \
--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=runner
Environment=HOME=/home/runner
[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>