Files
rf4-spotter/deploy/gitea-runner.compose.README.md
T

3.6 KiB
Raw Blame History

Gitea + Actions runner

Этот compose сохраняет существующие данные Gitea в /srv/gitea и хранит регистрацию runner отдельно в /srv/gitea-runner. Он рассчитан на перенос существующего контейнера, созданного через docker run.

Подготовка

На сервере, где работает Gitea, проверьте сеть и контейнер:

docker network inspect kycb_internal >/dev/null
docker inspect gitea --format '{{json .Mounts}}'
docker inspect gitea --format '{{json .Config.Env}}'

В каталоге рядом с compose создайте .env с правами 600:

TZ=Asia/Krasnoyarsk
GITEA_DATA_DIRECTORY=/srv/gitea
GITEA_RUNNER_DATA_DIRECTORY=/srv/gitea-runner

# Для runner внутри той же Docker-сети:
GITEA_INSTANCE_URL=http://gitea:3000/
GITEA_RUNNER_NAME=rf4-runner-01
GITEA_RUNNER_LABELS=ubuntu-latest:docker://docker.gitea.com/runner-images:ubuntu-latest
GITEA_RUNNER_REGISTRATION_TOKEN=вставьте_одноразовый_токен_из_Gitea

Токен создаётся в Repository → Settings → Actions → Runners → Create new runner. Он не должен попадать в Git, shell history или compose-файл.

Переключение без потери данных

Сначала остановите старый контейнер, но не удаляйте каталог данных:

docker stop gitea
docker rename gitea gitea-before-compose
sudo install -d -m 700 /srv/gitea-runner
sudo chmod 600 .env

Запустите compose из каталога, где лежат .env и gitea-runner.compose.yaml:

docker compose -f gitea-runner.compose.yaml config
docker compose -f gitea-runner.compose.yaml up -d
docker compose -f gitea-runner.compose.yaml ps
docker compose -f gitea-runner.compose.yaml logs -f runner

После запуска в Gitea runner должен иметь состояние Idle/Online. Проверка файлов регистрации:

sudo find /srv/gitea-runner -maxdepth 2 -type f -print

Старый контейнер оставьте остановленным до проверки web UI, SSH и Actions. Если нужно вернуться назад:

docker compose -f gitea-runner.compose.yaml down
docker rename gitea-before-compose gitea
docker start gitea

Команда down удаляет только контейнеры compose, а /srv/gitea и /srv/gitea-runner не удаляет.

Важные условия

GITEA_INSTANCE_URL должен быть доступен из контейнера runner. Если Gitea работает за reverse proxy и внутренний адрес http://gitea:3000/ не подходит, укажите внешний ROOT_URL, доступный с этого сервера.

Runner получает доступ к /var/run/docker.sock, потому что workflow проекта запускает Docker Compose, PostgreSQL service и Playwright. Такой runner должен исполнять только доверенный код: доступ к socket фактически даёт заданиям административный доступ к Docker-хосту.

Если runner уже регистрировался с другим label, удалите старую регистрацию в Gitea и используйте новый каталог /srv/gitea-runner; файл регистрации внутри /data вручную не редактируйте.