Nur zum Test des Deployment
| public | ||
| docker-compose.yml | ||
| Dockerfile | ||
| README.md | ||
Example App - Forgejo CI/CD Template
Diese Vorlage zeigt, wie du eine Anwendung mit Forgejo Actions automatisch auf deinen Server deployst.
Quick Start
1. Neues Repository in Forgejo erstellen
Gehe zu https://git.magholder.click und erstelle ein neues Repository.
2. Diese Dateien kopieren
# In dein Projektverzeichnis kopieren
cp -r templates/example-app/* mein-projekt/
cd mein-projekt
git init
git remote add origin git@git.magholder.click:USERNAME/mein-projekt.git
3. Repository-Variablen setzen
In Forgejo: Repository Settings → Actions → Variables
| Variable | Wert | Beschreibung |
|---|---|---|
APP_NAME |
mein-projekt |
Name der App (für Container und Pfade) |
DOMAIN |
mein-projekt.magholder.click |
Domain für Traefik |
4. SSH-Key als Secret hinzufügen
In Forgejo: Repository Settings → Actions → Secrets
| Secret | Wert |
|---|---|
SSH_PRIVATE_KEY |
Inhalt deines SSH Private Keys |
SSH-Key generieren (falls nicht vorhanden):
ssh-keygen -t ed25519 -f ~/.ssh/forgejo-deploy -N ""
# Public Key auf Server kopieren
ssh-copy-id -i ~/.ssh/forgejo-deploy.pub root@194.163.164.113
# Private Key als Secret verwenden
cat ~/.ssh/forgejo-deploy
5. Pushen und deployen
git add .
git commit -m "Initial commit"
git push -u origin main
Die Action wird automatisch gestartet und deployt deine App!
Anpassen
Eigenes Dockerfile
Ersetze das Dockerfile mit deinem eigenen Build-Prozess.
Andere Ports
Wenn deine App nicht auf Port 80 läuft, füge in docker-compose.yml hinzu:
labels:
- "traefik.http.services.${APP_NAME}.loadbalancer.server.port=3000"
Umgebungsvariablen
Füge in docker-compose.yml hinzu:
services:
app:
environment:
- DATABASE_URL=${DATABASE_URL}
Und setze DATABASE_URL als Secret in Forgejo.
Workflow-Datei
Die CI/CD Pipeline ist in .forgejo/workflows/deploy.yml definiert:
- Checkout - Code auschecken
- SSH Setup - SSH-Key für Server-Zugang einrichten
- Deploy - Dateien kopieren und
docker compose up -d
Troubleshooting
Action läuft nicht
- Ist der Runner aktiv? Prüfe unter Site Administration → Actions → Runners
- Sind
runs-on: dockerLabels korrekt?
SSH-Fehler
- Ist der Public Key auf dem Server in
~/.ssh/authorized_keys? - Stimmt der Private Key im Secret?
Container startet nicht
ssh root@194.163.164.113 "docker logs APP_NAME"