3.6 KiB
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 вручную не редактируйте.