mirror of
http://172.20.10.11:3000/gitadmin/INSIGHT-MVP.git
synced 2026-06-25 01:16:40 +02:00
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>
274 lines
7.7 KiB
Markdown
274 lines
7.7 KiB
Markdown
# 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:
|
|
|
|
```ini
|
|
# /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.
|
|
|
|
```bash
|
|
sudo systemctl restart forgejo
|
|
```
|
|
|
|
### 1.2 Container Registry aktiviert?
|
|
|
|
Die Registry muss ebenfalls in `app.ini` aktiviert sein:
|
|
|
|
```ini
|
|
[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
|
|
|
|
```bash
|
|
# 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:
|
|
|
|
1. Forgejo Web-UI oeffnen: `https://git.xinion.lan`
|
|
2. **Site Administration** > **Runners** (oben rechts Zahnrad-Icon)
|
|
3. Oder: **Repository** > **Settings** > **Actions** > **Runners**
|
|
4. Klick auf **"Create new Runner"** oder **"Registration Token"**
|
|
5. Token kopieren
|
|
|
|
Dann auf dem Server den Runner registrieren:
|
|
|
|
```bash
|
|
# 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
|
|
|
|
```bash
|
|
# 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-runner` sollte mit Status **"Online"** erscheinen
|
|
|
|
---
|
|
|
|
## 3. Repository-Einstellungen
|
|
|
|
### 3.1 Actions fuer das Repository aktivieren
|
|
|
|
1. Repository oeffnen: `https://git.xinion.lan/gitadmin/INSIGHT-MVP`
|
|
2. **Settings** > **Repository**
|
|
3. Unter **"Actions"**: Haken setzen bei **"Enable Repository Actions"**
|
|
4. Speichern
|
|
|
|
### 3.2 Repository Secrets anlegen
|
|
|
|
Die CI/CD-Pipeline braucht Secrets fuer den Server-Zugang.
|
|
|
|
1. **Settings** > **Actions** > **Secrets**
|
|
2. 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:
|
|
|
|
```bash
|
|
# 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**:
|
|
|
|
1. Forgejo Web-UI > **Profil** (oben rechts) > **Settings** > **Applications**
|
|
2. **Generate New Token**
|
|
3. Name: `insight-registry`
|
|
4. Berechtigungen: `write:package` (oder `package` Scope)
|
|
5. Token kopieren und als `REGISTRY_PASSWORD` Secret anlegen
|
|
|
|
### 3.3 Branch Protection einrichten
|
|
|
|
1. **Settings** > **Branches**
|
|
2. **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
|
|
|
|
```bash
|
|
# 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
|
|
|
|
1. Repository > **Packages** Tab
|
|
2. Das `insight-test` Image sollte sichtbar sein
|
|
3. Nach dem Test kann es geloescht werden
|
|
|
|
---
|
|
|
|
## 5. Checkliste
|
|
|
|
Bitte alle Punkte abarbeiten und abhaken:
|
|
|
|
- [ ] `app.ini`: `[actions] ENABLED = true` gesetzt
|
|
- [ ] `app.ini`: `[packages] ENABLED = true` gesetzt
|
|
- [ ] 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_KEY` angelegt (CI/CD Private Key)
|
|
- [ ] Secret `DEPLOY_HOST` angelegt (Server-IP)
|
|
- [ ] Secret `DEPLOY_USER` angelegt (`deploy`)
|
|
- [ ] Secret `REGISTRY_USER` angelegt (Forgejo Username)
|
|
- [ ] Secret `REGISTRY_PASSWORD` angelegt (Access Token)
|
|
- [ ] Branch Protection fuer `main` eingerichtet
|
|
- [ ] Branch Protection fuer `develop` eingerichtet
|
|
- [ ] Container Registry getestet (docker push/pull funktioniert)
|
|
|
|
---
|
|
|
|
## 6. Haeufige Probleme
|
|
|
|
### Runner startet nicht
|
|
```bash
|
|
# 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
|
|
```bash
|
|
# 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
|