Eine Seite zum Ausdrucken – alle wichtigen Schlüssel einer
.forgejo/workflows/*.yaml auf einen Blick. Tiefe steht in den Lektionen.
.forgejo/workflows/ im
Repo-Wurzelverzeichnis (z. B. .forgejo/workflows/ci.yaml). Endung .yaml oder .yml.name: CI # optional: Anzeigename
on: # TRIGGER — wann läuft das?
push:
branches: [main]
pull_request:
workflow_dispatch: # manueller Start per UI/API
schedule:
- cron: '0 6 * * *' # POSIX-cron
env: # Env-Variablen für ALLE Jobs
CI: "true"
concurrency: # nie zweimal parallel pro Gruppe
group: ci-${{ forgejo.ref }}
cancel-in-progress: true
jobs:
build: # ein JOB (id = "build")
runs-on: docker # Runner-LABEL (Pflicht*)
container: node:22 # optional: Image für den Job
if: ${{ forgejo.ref == 'refs/heads/main' }}
outputs: # Werte an Folgejobs
ver: ${{ steps.v.outputs.ver }}
strategy:
matrix:
node: [18, 20, 22] # Job vervielfachen
services: # Sidecar-Container (z.B. DB)
db:
image: postgres:16
steps: # STEPS — der Reihe nach
- uses: actions/checkout@v4 # Action verwenden
- id: v
run: echo "ver=1.2.3" >> "$FORGEJO_OUTPUT"
- run: npm ci && npm test
deploy:
runs-on: docker
needs: [build] # erst nach build
if: ${{ success() }}
steps:
- run: echo "deploy ${{ needs.build.outputs.ver }}"
* runs-on ist Pflicht, ausser der Job ruft via uses eine reusable workflow auf.
| Schlüssel | Ebene | Zweck |
|---|---|---|
name | workflow | Anzeigename in der UI (optional). |
on | workflow | Trigger: push, pull_request, schedule, workflow_dispatch, release, workflow_call … |
env | alle | Umgebungsvariablen (workflow/job/step). |
concurrency | workflow/job | Parallele Läufe derselben Gruppe verhindern/abbrechen. |
jobs.<id> | workflow | Definiert einen Job. Jobs laufen parallel, ausser via needs verkettet. |
runs-on | job | Label zur Runner-Auswahl. Pflicht*. |
container | job | Image, in dem alle Steps laufen. |
services | job | Begleit-Container (DB, Cache) für die Job-Dauer. |
needs | job | Abhängigkeit: warte auf andere Jobs (ersetzt stages). ★ |
if | job/step | Bedingung. ${{ }} ist hier implizit. |
strategy.matrix | job | Job über Wertekombinationen vervielfachen. |
outputs | job | Werte an needs-Folgejobs reichen. |
steps | job | Geordnete Liste. Jeder Step ist uses ODER run. |
uses | step | Action einbinden (URL/Repo/lokal/Container). ★ Lektion 6. |
run | step | Shell-Befehl(e) ausführen. |
with | step | Eingaben an eine uses-Action. |
.forgejo/workflows/ (GitHub: .github/workflows/;
GitLab: eine einzige .gitlab-ci.yml). Step-Output schreibt man nach
$FORGEJO_OUTPUT (Alias: $GITHUB_OUTPUT).