Step-by-step instructions for: - Enabling Forgejo Actions and Container Registry - Installing and registering a Forgejo Runner - Configuring repository secrets for deployment - Setting up branch protection rules - Testing the Container Registry Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
7.7 KiB
Forgejo Setup - Anleitung fuer den Git-Server
Ziel: Forgejo so konfigurieren, dass CI/CD Pipelines (Forgejo Actions) automatisch laufen und Docker Images in die integrierte Container Registry gepusht werden.
1. Voraussetzungen pruefen
1.1 Forgejo Actions aktiviert?
Forgejo Actions ist seit Forgejo 1.21+ verfuegbar, muss aber in der Server-Konfiguration aktiviert sein.
In der Forgejo-Konfiguration (app.ini auf dem Git-Server) pruefen:
# /etc/forgejo/app.ini (oder wo Forgejo installiert ist)
[actions]
ENABLED = true
DEFAULT_ACTIONS_URL = https://code.forgejo.org
Falls nicht vorhanden: Eintrag hinzufuegen und Forgejo neustarten.
sudo systemctl restart forgejo
1.2 Container Registry aktiviert?
Die Registry muss ebenfalls in app.ini aktiviert sein:
[packages]
ENABLED = true
2. Forgejo Actions Runner einrichten
Forgejo Actions braucht einen Runner (vergleichbar mit GitHub Actions Self-Hosted Runner). Der Runner fuehrt die CI/CD-Jobs aus.
2.1 Runner auf dem Git-Server installieren
# Runner-Binary herunterladen (aktuelle Version pruefen auf:
# https://code.forgejo.org/forgejo/runner/releases)
# Beispiel fuer Linux x86_64:
wget https://code.forgejo.org/forgejo/runner/releases/download/v4.0.0/forgejo-runner-4.0.0-linux-amd64
chmod +x forgejo-runner-4.0.0-linux-amd64
sudo mv forgejo-runner-4.0.0-linux-amd64 /usr/local/bin/forgejo-runner
2.2 Runner registrieren
Zuerst ein Registration Token in Forgejo generieren:
- Forgejo Web-UI oeffnen:
https://git.xinion.lan - Site Administration > Runners (oben rechts Zahnrad-Icon)
- Oder: Repository > Settings > Actions > Runners
- Klick auf "Create new Runner" oder "Registration Token"
- Token kopieren
Dann auf dem Server den Runner registrieren:
# Runner registrieren (interaktiv)
forgejo-runner register \
--instance https://git.xinion.lan \
--token <DEIN-REGISTRATION-TOKEN> \
--name insight-runner \
--labels ubuntu-latest:docker://node:20
# Alternativ: non-interaktiv
forgejo-runner register --no-interactive \
--instance https://git.xinion.lan \
--token <DEIN-REGISTRATION-TOKEN> \
--name insight-runner \
--labels "ubuntu-latest:docker://node:20,docker:docker://docker:latest"
2.3 Runner als Systemd-Service einrichten
# Service-Datei erstellen
sudo tee /etc/systemd/system/forgejo-runner.service > /dev/null << 'UNIT'
[Unit]
Description=Forgejo Actions Runner
After=docker.service
[Service]
Type=simple
User=forgejo-runner
WorkingDirectory=/opt/forgejo-runner
ExecStart=/usr/local/bin/forgejo-runner daemon
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
UNIT
# User und Verzeichnis anlegen
sudo useradd -r -s /bin/false forgejo-runner
sudo mkdir -p /opt/forgejo-runner
sudo chown forgejo-runner:forgejo-runner /opt/forgejo-runner
# Docker-Zugriff fuer den Runner
sudo usermod -aG docker forgejo-runner
# Service starten
sudo systemctl daemon-reload
sudo systemctl enable forgejo-runner
sudo systemctl start forgejo-runner
# Status pruefen
sudo systemctl status forgejo-runner
2.4 Pruefen ob Runner aktiv ist
In Forgejo Web-UI:
- Site Administration > Runners
- Der Runner
insight-runnersollte mit Status "Online" erscheinen
3. Repository-Einstellungen
3.1 Actions fuer das Repository aktivieren
- Repository oeffnen:
https://git.xinion.lan/gitadmin/INSIGHT-MVP - Settings > Repository
- Unter "Actions": Haken setzen bei "Enable Repository Actions"
- Speichern
3.2 Repository Secrets anlegen
Die CI/CD-Pipeline braucht Secrets fuer den Server-Zugang.
- Settings > Actions > Secrets
- Folgende Secrets anlegen:
| Secret Name | Wert | Zweck |
|---|---|---|
SSH_DEPLOY_KEY |
Inhalt von .keys/cicd_ed25519 (Private Key) |
SSH-Zugriff auf Server |
DEPLOY_HOST |
IP-Adresse von insight-dev-01 |
Server-Adresse |
DEPLOY_USER |
deploy |
SSH-User auf dem Server |
REGISTRY_USER |
Forgejo-Username (z.B. gitadmin) |
Container Registry Login |
REGISTRY_PASSWORD |
Forgejo-Passwort oder Access Token | Container Registry Login |
SSH Key als Secret hinterlegen
Den kompletten Inhalt des Private Keys kopieren:
# Auf dem MacBook ausfuehren:
cat .keys/cicd_ed25519
Den gesamten Output (inkl. -----BEGIN OPENSSH PRIVATE KEY----- und
-----END OPENSSH PRIVATE KEY-----) in das Secret-Feld einfuegen.
Forgejo Access Token erstellen (fuer Registry)
Statt Passwort empfehlen wir einen Access Token:
- Forgejo Web-UI > Profil (oben rechts) > Settings > Applications
- Generate New Token
- Name:
insight-registry - Berechtigungen:
write:package(oderpackageScope) - Token kopieren und als
REGISTRY_PASSWORDSecret anlegen
3.3 Branch Protection einrichten
- Settings > Branches
- Add Branch Protection Rule
Fuer main:
- Branch name pattern:
main - Enable push: Deaktiviert (nur via Merge)
- Required approvals: 1
- Status checks must pass: Aktiviert
Fuer develop:
- Branch name pattern:
develop - Enable push: Deaktiviert (nur via Merge)
- Required approvals: 1
- Status checks must pass: Aktiviert
4. Container Registry testen
4.1 Vom MacBook aus testen
# In die Forgejo Registry einloggen
docker login git.xinion.lan -u <FORGEJO-USERNAME>
# Passwort oder Access Token eingeben
# Test-Image taggen und pushen
docker pull hello-world
docker tag hello-world git.xinion.lan/gitadmin/insight-test:latest
docker push git.xinion.lan/gitadmin/insight-test:latest
# Aufraumen
docker rmi git.xinion.lan/gitadmin/insight-test:latest
4.2 In Forgejo pruefen
- Repository > Packages Tab
- Das
insight-testImage sollte sichtbar sein - Nach dem Test kann es geloescht werden
5. Checkliste
Bitte alle Punkte abarbeiten und abhaken:
app.ini:[actions] ENABLED = truegesetztapp.ini:[packages] ENABLED = truegesetzt- Forgejo neugestartet nach Config-Aenderung
- Forgejo Runner installiert und registriert
- Runner laeuft als Systemd-Service und ist "Online"
- Repository Actions aktiviert (Settings > Repository)
- Secret
SSH_DEPLOY_KEYangelegt (CI/CD Private Key) - Secret
DEPLOY_HOSTangelegt (Server-IP) - Secret
DEPLOY_USERangelegt (deploy) - Secret
REGISTRY_USERangelegt (Forgejo Username) - Secret
REGISTRY_PASSWORDangelegt (Access Token) - Branch Protection fuer
maineingerichtet - Branch Protection fuer
developeingerichtet - Container Registry getestet (docker push/pull funktioniert)
6. Haeufige Probleme
Runner startet nicht
# Logs pruefen
sudo journalctl -u forgejo-runner -f
# Hat der Runner Docker-Zugriff?
sudo -u forgejo-runner docker ps
Actions werden nicht getriggert
- Ist Actions im Repository aktiviert? (Settings > Repository)
- Liegt die Workflow-Datei unter
.forgejo/workflows/? - Ist der Runner online? (Site Administration > Runners)
Registry Push schlaegt fehl
# Login testen
docker login git.xinion.lan
# Ist die Registry aktiviert?
# In app.ini: [packages] ENABLED = true
Branch Protection blockiert Push
- Korrekt! Main und Develop sind geschuetzt.
- Feature-Branches erstellen:
git checkout -b feature/mein-feature - Push auf Feature-Branch, dann Pull Request erstellen