Автоматическая валидация при 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 Runner | Выделенная VM | Выполняет джобы (systemd-сервис) |
| Gitea | gitea.services.ngcloud.ru | Отправляет задачи раннеру |
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. Пока делает простую проверку — в будущем можно добавить:
py_compile)deploy/sync.sh)⚠️ Ручной редеплой managed-сервиса (Flask) — через Nubes UI. Workflow НЕ делает редеплой автоматически — только валидацию и синхронизацию 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
В Gitea: Репозиторий → Settings → Actions → Runners → Create new runner
Выдаётся токен вида D0gvfu2iHfUj... — он используется для регистрации.
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). Джобы выполняются прямо на машине.
act_runner generate-config > /etc/act_runner/config.yaml # Важно: поправить labels → ["linux_amd64:host"]
[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
sudo systemctl daemon-reload sudo systemctl enable act_runner --now sudo systemctl status act_runner
Создать .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 репозитория.