🔄 Gitea Actions — настройка CI/CD

⚠️ Не решает проблему ручного редеплоя 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Ваш инстансОтправляет задачи раннеру при пуше

Пример workflow

name: Validate
on:
  push:
    branches: [master]

jobs:
  check:
    runs-on: linux_amd64
    steps:
      - name: Syntax check
        run: python3 -m py_compile *.py

Что можно автоматизировать:


Как это настраивалось

1. Установка act_runner на 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

2. Получение токена

В Gitea: Репозиторий → Settings → Actions → Runners → Create new runner

Выдаётся токен вида D0gvfu2iHfUj... — он используется для регистрации.

3. Регистрация раннера

act_runner register \
  --no-interactive \
  --instance https://<ваш-gitea> \
  --token <TOKEN> \
  --name <имя-раннера> \
  --labels linux_amd64:host

linux_amd64:host — означает host-режим (без Docker). Джобы выполняются прямо на машине.

4. Генерация конфига

act_runner generate-config > /etc/act_runner/config.yaml
# Важно: поправить labels → ["linux_amd64:host"]

5. Systemd-сервис

[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

6. Workflow-файл

Создать .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 репозитория.


Полезные ссылки