Forgejo Pipelines · Workshop Lektion 13 / Abschluss ★

Besonderheiten & Migration

Alle Forgejo-Eigenheiten gebündelt – und die ganze Tasks-API-Pipeline an einem Stück.

Warum das zählt
Diese Lektion ist dein Spickzettel für den Workshop: die gesammelten Forgejo-Besonderheiten, eine Übersetzungstabelle für alle, die aus GitLab kommen, und die komplette, zusammengesetzte Pipeline unserer Tasks-API.

Die Forgejo-Besonderheiten auf einen Blick ★

ThemaForgejo-EigenheitLektion
AusführungForgejo verteilt nur; ein Runner + act führt aus1
ReihenfolgeKein stages – Ordnung allein über needs2
Verzeichnis.forgejo/workflows/ (auch .github/ lesbar)1
Artifactsactions/upload-artifact@v4 bricht – Fork forgejo/upload-artifact nutzen3
CacheBraucht Cache-Server am Runner, sonst Fehler3
VariablenFORGEJO_* & spiegelnd GITHUB_*4
ScheduleSommerzeit: Lauf fällt aus / doppelt (anders als GitHub)5
ActionsKein Marketplace; uses: über DEFAULT_ACTIONS_URL6
ServicesHost = Service-Name, nicht localhost7
Registry{registry}/{owner}/{image}; Default-Token kann nicht pushen8
Environmentsenvironment: nur eingeschränkt (kaum Protection Rules)10
Fork-PRsRead-only Token, keine Secrets; pull_request_target riskant12

Migration: GitLab → Forgejo (Übersetzungstabelle)

GitLab CIForgejo Actions
.gitlab-ci.yml (eine Datei).forgejo/workflows/*.yaml (mehrere)
stages: + Job-stage:needs: am Job
Job-script:Step-run: (oder uses:)
image:container:
tags: (Runner)runs-on: + Label
rules: / onlyon: + if:
variables:env: / vars / secrets
extends / includeYAML-Anker / reusable workflows (uses)
parallel: matrixstrategy: matrix
when: manualworkflow_dispatch
$CI_COMMIT_SHA$FORGEJO_SHA / ${{ forgejo.sha }}

Die ganze Pipeline – zusammengesetzt

.forgejo/workflows/ci.yaml
name: CI
on:
  push: { branches: [main] }
  pull_request:
  workflow_dispatch:
concurrency:
  group: ci-${{ forgejo.ref }}
  cancel-in-progress: true

jobs:
  lint:
    runs-on: docker
    container: python:3.12-slim
    steps:
      - uses: actions/checkout@v4
      - run: pip install ruff && ruff check app tests

  test:
    runs-on: docker
    needs: [lint]
    strategy: { matrix: { python: ["3.11", "3.12"] }, fail-fast: false }
    container: python:${{ matrix.python }}-slim
    services:
      db: { image: postgres:16, env: { POSTGRES_PASSWORD: secret } }
    env: { DATABASE_URL: postgres://postgres:secret@db:5432/postgres }
    steps:
      - uses: actions/checkout@v4
      - run: pip install -r requirements.txt
      - run: pytest --cov=app -q
      - uses: https://code.forgejo.org/forgejo/upload-artifact@v4
        with: { name: coverage, path: .coverage }

  image:
    runs-on: docker
    needs: [test]
    if: ${{ forgejo.ref == 'refs/heads/main' }}
    steps:
      - uses: actions/checkout@v4
      - uses: https://code.forgejo.org/docker/login-action@v3
        with: { registry: git.example.com, username: ${{ secrets.REGISTRY_USER }}, password: ${{ secrets.REGISTRY_TOKEN }} }
      - uses: https://code.forgejo.org/docker/build-push-action@v5
        with: { context: ., push: true, tags: git.example.com/team/tasks-api:${{ forgejo.sha }} }

Jede Zeile davon hast du in einer eigenen Lektion gesehen – das ist die ganze Reise auf einem Blatt.

Übungen für Teilnehmende

Übung 1 · Migrieren

Aufgabe: Übersetze diesen GitLab-Job nach Forgejo: test: { stage: test, image: python:3.12, script: [pytest] }.

Lösung anzeigen
  test:
    runs-on: docker
    container: python:3.12
    needs: [lint]        # statt stage: test
    steps:
      - uses: actions/checkout@v4
      - run: pytest
Übung 2 · Workshop-Check

Frage: Nenne aus dem Kopf drei Forgejo-Besonderheiten, die einen kopierten GitHub-Workflow zum Scheitern bringen können.

Lösung anzeigen

Z. B.: (1) actions/upload-artifact@v4 aus dem Mirror bricht, (2) uses:-Auflösung hängt an DEFAULT_ACTIONS_URL, (3) der automatische Token kann keine Images pushen. Auch gültig: fehlender Cache-Server, Service-Host ≠ localhost.

Kurz prüfen (aus dem Kopf)

Was ersetzt in Forgejo das GitLab-stages?

Wo liegen Forgejo-Workflows?

Primärquelle & Community Forgejo Docs – Actions (gesamt) · Forgejo Matrix-Chat · Forgejo Forum – ideal, um deine Workshop-Pipeline von echten Praktiker:innen gegenlesen zu lassen.
Geschafft – das ist der ganze Kurs. Ich bin weiter dein Teacher: Lass uns die Pipeline an deinem echten Repo zusammensetzen, einzelne Lektionen vertiefen, oder den Workshop-Ablauf proben. Sag einfach, wo du ansetzen willst.
← Lektion 12 · Sicherheit Zur Kursübersicht ↑