.gitea/workflows/ci.yml (из .github — Gitea сканирует оба пути, оставлен один канонический); deploy/gitea-runner: docker-compose act_runner с метками ubuntu-latest -> gitea/runner-images, .env.example и README (токен регистрации в .env, в git не попадает). Первый прогон — push этого коммита.
This commit is contained in:
@@ -34,3 +34,8 @@ src/core/Deal.Api/data/
|
|||||||
# Python
|
# Python
|
||||||
__pycache__/
|
__pycache__/
|
||||||
*.pyc
|
*.pyc
|
||||||
|
|
||||||
|
# Gitea runner: секреты и локальное состояние
|
||||||
|
!deploy/gitea-runner/.env.example
|
||||||
|
deploy/gitea-runner/.env
|
||||||
|
deploy/gitea-runner/data/
|
||||||
|
|||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Адрес инстанса Gitea
|
||||||
|
GITEA_INSTANCE_URL=https://gitea.khomegeneric.keenetic.pro
|
||||||
|
|
||||||
|
# Токен регистрации раннера: Gitea -> Site Administration (или репозиторий) -> Actions -> Runners
|
||||||
|
# -> Create new runner; либо API:
|
||||||
|
# curl -sk -u rust:ПАРОЛЬ -X GET \
|
||||||
|
# https://gitea.khomegeneric.keenetic.pro/api/v1/repos/rust/Deal/actions/runners/registration-token
|
||||||
|
RUNNER_TOKEN=
|
||||||
|
|
||||||
|
# Имя раннера в интерфейсе Gitea
|
||||||
|
RUNNER_NAME=deal-runner
|
||||||
|
|
||||||
|
# Метки для runs-on (по умолчанию хватает ubuntu-latest)
|
||||||
|
# RUNNER_LABELS=ubuntu-latest:docker://gitea/runner-images:ubuntu-latest
|
||||||
@@ -0,0 +1,34 @@
|
|||||||
|
# Gitea Actions Runner (Deal CI)
|
||||||
|
|
||||||
|
Раннер для `.gitea/workflows/ci.yml`. Workflow требует метку `ubuntu-latest`;
|
||||||
|
job-контейнер — `gitea/runner-images:ubuntu-latest`, .NET 10 и Node 20 ставятся
|
||||||
|
шагами `setup-dotnet`/`setup-node` внутри job'а.
|
||||||
|
|
||||||
|
## Поднять на любой машине с Docker (в той же сети, что Gitea)
|
||||||
|
|
||||||
|
```sh
|
||||||
|
cp .env.example .env # вписать RUNNER_TOKEN
|
||||||
|
docker compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
|
Токен: Gitea → **Site Administration → Actions → Runners → Create new runner**
|
||||||
|
или API (см. `.env.example`).
|
||||||
|
|
||||||
|
Проверка: Gitea → репозиторий → **Actions → Runners** — раннер `deal-runner`
|
||||||
|
должен быть Idle. Далее любой `git push` в `main` запускает workflow
|
||||||
|
(`.gitea/workflows/ci.yml`: `sh scripts/ci.sh` — сборка 5 решений, тесты,
|
||||||
|
скан уязвимостей, сборка и линтер фронта).
|
||||||
|
|
||||||
|
## Перенос на сервер Gitea
|
||||||
|
|
||||||
|
1. Скопировать каталог на сервер, заполнить `.env`, `docker compose up -d`.
|
||||||
|
2. Локальный раннер погасить: `docker compose down` (каталог `data/` содержит
|
||||||
|
регистрацию — при переносе можно удалить и перерегистрировать).
|
||||||
|
|
||||||
|
## Заметки
|
||||||
|
|
||||||
|
- Первая строка pulls ~1.5 GB (`gitea/runner-images:ubuntu-latest` + SDK ~200 MB
|
||||||
|
при первом прогоне); последующие прогоны — инкрементальные.
|
||||||
|
- `restart: unless-stopped` — раннер переживает перезагрузку хоста.
|
||||||
|
- Токен регистрации используется один раз при `register`; хранить его в
|
||||||
|
репозитории нельзя — только в `.env` (в `.gitignore`).
|
||||||
@@ -0,0 +1,18 @@
|
|||||||
|
services:
|
||||||
|
runner:
|
||||||
|
image: gitea/act_runner:latest
|
||||||
|
container_name: deal-act-runner
|
||||||
|
restart: unless-stopped
|
||||||
|
depends_on: []
|
||||||
|
environment:
|
||||||
|
# Адрес инстанса Gitea и токен регистрации — в .env рядом с этим файлом
|
||||||
|
GITEA_INSTANCE_URL: ${GITEA_INSTANCE_URL:?заполните .env}
|
||||||
|
GITEA_RUNNER_REGISTRATION_TOKEN: ${RUNNER_TOKEN:?заполните .env}
|
||||||
|
GITEA_RUNNER_NAME: ${RUNNER_NAME:-deal-runner}
|
||||||
|
# Метки, по которым workflow находит раннер: runs-on: ubuntu-latest
|
||||||
|
GITEA_RUNNER_LABELS: ${RUNNER_LABELS:-ubuntu-latest:docker://gitea/runner-images:ubuntu-latest,ubuntu-22.04:docker://gitea/runner-images:ubuntu-22.04}
|
||||||
|
volumes:
|
||||||
|
# Раннер запускает job-контейнеры через docker хоста
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
- ./data:/data
|
||||||
|
privileged: false
|
||||||
Reference in New Issue
Block a user