Forgejo Pipelines · Workshop Referenz

Cheatsheet: Anatomie einer Workflow-Datei

Eine Seite zum Ausdrucken – alle wichtigen Schlüssel einer .forgejo/workflows/*.yaml auf einen Blick. Tiefe steht in den Lektionen.

Ablageort: Workflow-Dateien liegen in .forgejo/workflows/ im Repo-Wurzelverzeichnis (z. B. .forgejo/workflows/ci.yaml). Endung .yaml oder .yml.

Gerüst mit allen wichtigen Schlüsseln

.forgejo/workflows/ci.yaml
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-Spickzettel

SchlüsselEbeneZweck
nameworkflowAnzeigename in der UI (optional).
onworkflowTrigger: push, pull_request, schedule, workflow_dispatch, release, workflow_call
envalleUmgebungsvariablen (workflow/job/step).
concurrencyworkflow/jobParallele Läufe derselben Gruppe verhindern/abbrechen.
jobs.<id>workflowDefiniert einen Job. Jobs laufen parallel, ausser via needs verkettet.
runs-onjobLabel zur Runner-Auswahl. Pflicht*.
containerjobImage, in dem alle Steps laufen.
servicesjobBegleit-Container (DB, Cache) für die Job-Dauer.
needsjobAbhängigkeit: warte auf andere Jobs (ersetzt stages).
ifjob/stepBedingung. ${{ }} ist hier implizit.
strategy.matrixjobJob über Wertekombinationen vervielfachen.
outputsjobWerte an needs-Folgejobs reichen.
stepsjobGeordnete Liste. Jeder Step ist uses ODER run.
usesstepAction einbinden (URL/Repo/lokal/Container). Lektion 6.
runstepShell-Befehl(e) ausführen.
withstepEingaben an eine uses-Action.
Verzeichnis & Output heissen anders als bei GitHub/GitLab Workflows liegen in .forgejo/workflows/ (GitHub: .github/workflows/; GitLab: eine einzige .gitlab-ci.yml). Step-Output schreibt man nach $FORGEJO_OUTPUT (Alias: $GITHUB_OUTPUT).
Quelle Forgejo Docs – Reference (YAML-Syntax) · Basic concepts
← Glossar Vordefinierte Variablen & Kontexte →