Files
gitea-ci-library/docs/runner.md
T
niko 14a411e340
CI Main / Load example-gitea-env.conf to pipeline env (push) Successful in 18s
CI Main / Check existing artifact (push) Successful in 12s
unit-tests Link to Bats reports
CI Main / Bats tests (push) Successful in 1m41s
acc-tests Link to Cucumber reports
CI Main / Cucumber tests (push) Successful in 1m7s
ci-docker-build-push Docker build & push 0.2.1 OK
CI Main / Build & Push Docker (push) Successful in 34s
CI Main / Report Summary (push) Successful in 4s
consumer project käyttöönotossa tulleitea muutoksia (#12)
Co-authored-by: moilanik <niko.moilanen@tietoevry.com>
Reviewed-on: #12
2026-06-16 04:48:05 +03:00

102 lines
3.0 KiB
Markdown

# Gitea Actions — Runtime-ympäristö
> Kuuluu arkkitehtuuriin: [architecture.md](architecture.md). Asennusohjeet: [README.md](../README.md).
>
> Tämä dokumentti kuvaa miten Gitea Actions runner suorittaa workflowt ja minkälaisen runtime-ympäristön se tarjoaa.
---
## Runnerin rooli
Runner on **pelkkä suoritin**. Se ei sisällä build-työkaluja (Maven, npm, Docker) — ne tulevat workflow'n määrittelemistä konteista. Runner vastaanottaa työt Gitea-palvelimelta, ajaa ne ja raportoi tulokset takaisin.
```
Gitea → dispatch job → Runner → pull containers → execute steps → report status
```
Runnerilla on yksi vastuu: **suorittaa workflow-steppejä**. Kaikki runtime-ympäristön määrittely tapahtuu workflow-tiedostossa.
## Kontit ja palvelut
Jokainen job voi määritellä käyttämänsä kontit. Eri jobeilla voi olla eri kontti:
### `container:` — ajonaikainen ympäristö
Workflow-steppi ajetaan tässä kontissa. Eri jobeilla voi olla eri kontti:
```yaml
jobs:
build-java:
runs-on: ubuntu-latest
container: maven:3.9-eclipse-temurin-21
steps:
- run: mvn verify
build-node:
runs-on: ubuntu-latest
container: node:22
steps:
- run: npm ci && npm test
```
### `services:` — rinnakkaiset palvelut
Palvelukontit käynnistyvät jobin ajaksi ja ovat käytettävissä `localhost`-verkon kautta:
```yaml
jobs:
build-with-docker:
runs-on: ubuntu-latest
container: maven:3.9-eclipse-temurin-21
services:
docker:
image: docker:dind
env:
DOCKER_TLS_CERTDIR: ""
steps:
- run: mvn package
- run: docker build -t my-app .
```
Kontit vedetään ajonaikaisesti registrystä (Docker Hub, Gitea Packages, mikä tahansa). Runnerin ei tarvitse tietää niistä etukäteen.
### Docker-in-Docker
Runner-podilla on kaksi tapaa käyttää Dockeria:
| Tapa | Kuvaus | Sopii |
|------|--------|-------|
| **DinD** (`docker:dind`) | Oma Docker daemon service-kontissa | Suositeltu K8s-ympäristöön |
| **Docker socket** | Jaettu `/var/run/docker.sock` | Yksinkertainen, vähemmän eristetty |
Gitea act runnerin Helm chart tukee DinD:tä oletuksena.
## Label-järjestelmä
Runnerit rekisteröidään labelilla. Workflow valitsee runnerin `runs-on`-kentällä:
```yaml
jobs:
build:
runs-on: ubuntu-latest # ← label
```
Labelit asetetaan runnerin rekisteröinnissä:
```bash
# Helm
--set runner.labels="ubuntu-latest,docker,arm64"
# Binääri
./act_runner register --labels ubuntu-latest,docker
```
Eri labelit mahdollistavat erikoistuneet runnerit (ARM, GPU, Windows), mutta MVP:ssä riittää yksi `ubuntu-latest`.
## Runner-tasot
| Taso | Scope | Riski | Käyttötapaus |
|------|-------|-------|--------------|
| **Global** | Kaikki organisaatiot ja repot | Token-vuoto → hyökkääjä voi ajaa koodia missä tahansa | Jaettu infra, keskitetty hallinta |
| **Organization** | Yhden organisaation repot | Rajoittuu yhteen orgiin | Per organisaatio, eristetty — **suositeltu** |