fix: generic ci-cd page, honest about manual redeploy limitation
Deploy contracts-flask / validate (push) Successful in 0s

This commit is contained in:
2026-06-29 11:41:10 +04:00
parent bc002d4cf3
commit c073b5f92c
+24 -23
View File
@@ -3,7 +3,7 @@
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CI/CD — Gitea Actions для contracts-flask</title>
<title>Gitea Actions — настройка CI/CD</title>
<style>
:root {
--bg: #0d1117; --fg: #c9d1d9; --muted: #8b949e;
@@ -33,51 +33,52 @@
</head>
<body>
<div class="nav"><a href="/">← Вернуться к загрузке</a> | <a href="/architect">Архитектура</a></div>
<div class="nav"><a href="/docs/architect">Архитектура</a></div>
<h1>🔄 CI/CD — Gitea Actions для contracts-flask</h1>
<p style="color:var(--muted)">Автоматическая валидация при git push. Настроено 2026-06-29.</p>
<h1>🔄 Gitea Actions — настройка CI/CD</h1>
<blockquote style="border-left-color: #f85149; background: #1a0a0a; color: #f85149;">
<strong>⚠️ Не решает проблему ручного редеплоя managed-сервисов Nubes.</strong><br>
Если сервис деплоится только через Nubes UI — Gitea Actions может максимум валидировать код и синхронизировать VM-часть. Кнопку «Redeploy» всё равно жать руками.
</blockquote>
<hr>
<h2>Как это работает</h2>
<p>Gitea Actions — встроенный CI/CD (аналог GitHub Actions), доступен с Gitea 1.19+. При каждом <code>git push</code> в master запускается workflow, который выполняет заданные шаги на <strong>раннере</strong> — отдельной машине, которая слушает задачи.</p>
<p>Gitea Actions — встроенный CI/CD (аналог GitHub Actions), доступен с Gitea 1.19+. При <code>git push</code> запускается 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>
<tr><td>Workflow-файл</td><td><code>.gitea/workflows/*.yaml</code></td><td>Описывает шаги (steps) при пуше</td></tr>
<tr><td>Act Runner</td><td>Любая машина с доступом к Gitea</td><td>Выполняет джобы (systemd-сервис)</td></tr>
<tr><td>Gitea</td><td>Ваш инстанс</td><td>Отправляет задачи раннеру при пуше</td></tr>
</table>
<hr>
<h2>Текущий workflow</h2>
<h2>Пример workflow</h2>
<pre>name: Deploy contracts-flask
<pre>name: Validate
on:
push:
branches: [master]
jobs:
validate:
check:
runs-on: linux_amd64
steps:
- name: Test runner
run: |
echo "✅ Runner is alive!"
python3 --version</pre>
- name: Syntax check
run: python3 -m py_compile *.py</pre>
<p>Workflow срабатывает при каждом пуше в master. Пока делает простую проверку — в будущем можно добавить:</p>
<p>Что можно автоматизировать:</p>
<ul>
<li>Синтаксическую проверку Python (<code>py_compile</code>)</li>
<li>Синхронизацию кода на VM (<code>deploy/sync.sh</code>)</li>
<li>Уведомление в Telegram о готовности к ручному редеплою</li>
<li>Синтаксическую проверку</li>
<li>Запуск тестов (<code>pytest</code>)</li>
<li>Синхронизацию кода на свою VM (<code>rsync</code> / <code>scp</code>)</li>
<li>Уведомления (Telegram, email)</li>
</ul>
<p><strong>⚠️ Ручной редеплой managed-сервиса (Flask) — через Nubes UI.</strong> Workflow НЕ делает редеплой автоматически — только валидацию и синхронизацию VM-части.</p>
<hr>
<h2>Как это настраивалось</h2>
@@ -100,9 +101,9 @@ chmod +x /usr/local/bin/act_runner</pre>
<h3>3. Регистрация раннера</h3>
<pre>act_runner register \
--no-interactive \
--instance https://gitea.services.ngcloud.ru \
--instance https://&lt;ваш-gitea&gt; \
--token &lt;TOKEN&gt; \
--name contracts-vm \
--name &lt;имя-раннера&gt; \
--labels linux_amd64:host</pre>
<p><code>linux_amd64:host</code> — означает host-режим (без Docker). Джобы выполняются прямо на машине.</p>
</div>