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