⚠️ Не решает проблему ручного редеплоя managed-сервисов Nubes.
Если сервис деплоится только через Nubes UI — Gitea Actions может максимум валидировать код и синхронизировать VM-часть. Кнопку «Redeploy» всё равно жать руками.
Gitea Actions — встроенный CI/CD (аналог GitHub Actions), доступен с Gitea 1.19+. При git push запускается workflow, который выполняет заданные шаги на раннере — отдельной машине, которая слушает задачи.
| Компонент | Где | Что делает |
|---|---|---|
| Workflow-файл | .gitea/workflows/*.yaml | Описывает шаги (steps) при пуше |
| Act Runner | Любая машина с доступом к Gitea | Выполняет джобы (systemd-сервис) |
| Gitea | Ваш инстанс | Отправляет задачи раннеру при пуше |
name: Validate
on:
push:
branches: [master]
jobs:
check:
runs-on: linux_amd64
steps:
- name: Syntax check
run: python3 -m py_compile *.py
Что можно автоматизировать:
pytest)rsync / scp)# Скачать бинарник 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> \ --token <TOKEN> \ --name <имя-раннера> \ --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 репозитория.