88 lines
3.6 KiB
Markdown
88 lines
3.6 KiB
Markdown
# Gitea + Actions runner
|
||
|
||
Этот compose сохраняет существующие данные Gitea в `/srv/gitea` и хранит
|
||
регистрацию runner отдельно в `/srv/gitea-runner`. Он рассчитан на перенос
|
||
существующего контейнера, созданного через `docker run`.
|
||
|
||
## Подготовка
|
||
|
||
На сервере, где работает Gitea, проверьте сеть и контейнер:
|
||
|
||
```bash
|
||
docker network inspect kycb_internal >/dev/null
|
||
docker inspect gitea --format '{{json .Mounts}}'
|
||
docker inspect gitea --format '{{json .Config.Env}}'
|
||
```
|
||
|
||
В каталоге рядом с compose создайте `.env` с правами `600`:
|
||
|
||
```dotenv
|
||
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-файл.
|
||
|
||
## Переключение без потери данных
|
||
|
||
Сначала остановите старый контейнер, но не удаляйте каталог данных:
|
||
|
||
```bash
|
||
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`:
|
||
|
||
```bash
|
||
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`. Проверка
|
||
файлов регистрации:
|
||
|
||
```bash
|
||
sudo find /srv/gitea-runner -maxdepth 2 -type f -print
|
||
```
|
||
|
||
Старый контейнер оставьте остановленным до проверки web UI, SSH и Actions. Если
|
||
нужно вернуться назад:
|
||
|
||
```bash
|
||
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` вручную не редактируйте.
|