Files
michaelschiemer/deployment/stacks/semaphore/QUICKSTART.md
Michael Schiemer 77c656af62 feat(deployment): update Semaphore stack and Traefik configuration
- Add QUICKSTART.md and SETUP_REPOSITORY.md for Semaphore stack
- Add playbooks directory for Semaphore deployment
- Update Semaphore docker-compose.yml, env.example, and README
- Add Traefik local configuration files
- Disable semaphore.yml in Traefik dynamic config
- Update docker-compose.local.yml and build-image workflow
2025-11-02 22:55:51 +01:00

5.0 KiB

?? Quick Start: Semaphore mit Repository verbinden

Kurze Schritt-f?r-Schritt-Anleitung, um Semaphore mit deinem Git-Repository zu verbinden.

Schritt 1: Semaphore starten

cd deployment/stacks/semaphore
cp env.example .env

WICHTIG: Generiere einen Encryption Key:

head -c32 /dev/urandom | base64

Kopiere den Key und setze ihn in .env:

SEMAPHORE_ACCESS_KEY_ENCRYPTION=<dein-generierter-key>
docker compose up -d

Schritt 2: Semaphore ?ffnen

?ffne im Browser: http://localhost:9300

Login:

  • Username: admin
  • Password: admin

Schritt 3: Projekt erstellen

  1. Klicke auf "New Project" oder "Create Project"
  2. Name: "michaelschiemer"
  3. Klicke auf "Create"

Schritt 4: Inventory erstellen (Hosts definieren)

4.1 Inventory anlegen

  1. Gehe zu Inventories ? New Inventory
  2. Name: "Production Hosts"
  3. Klicke auf "Create"

4.2 Host hinzuf?gen

  1. Klicke auf dein Inventory ? "Add Host"
  2. F?lle aus:
Name: production
Address: 94.16.110.151
SSH Username: deploy
SSH Port: 22
  1. Klicke auf "Save"

4.3 SSH-Key hinzuf?gen

  1. Gehe zu Keys (in der Seitenleiste)
  2. Klicke auf "New Key"
  3. Name: "Deployment Key"
  4. F?ge deinen SSH Private Key ein (aus ~/.ssh/production):
    cat ~/.ssh/production
    
  5. Klicke auf "Save"
  6. Gehe zur?ck zu deinem Inventory und w?hle den Key bei deinem Host aus

Schritt 5: Template erstellen (Playbook verwenden)

5.1 Template f?r CI Tests

  1. Gehe zu Templates ? New Template
  2. Name: "Run CI Tests"
  3. Inventory: W?hle "Production Hosts"
  4. Playbook Path: /tmp/semaphore/playbooks/ci-tests.yml
  5. Variables (klicke auf "Variables"):
    repo_url: https://git.michaelschiemer.de/michael/michaelschiemer.git
    repo_branch: main
    
  6. Klicke auf "Save"

5.2 Template f?r Docker Build

  1. Templates ? New Template
  2. Name: "Build Docker Image"
  3. Inventory: "Production Hosts"
  4. Playbook Path: /tmp/semaphore/playbooks/docker-build.yml
  5. Variables:
    repo_url: https://git.michaelschiemer.de/michael/michaelschiemer.git
    repo_branch: main
    registry_url: registry.michaelschiemer.de
    registry_user: admin
    registry_password: <dein-registry-passwort>
    image_name: framework
    image_tag: latest
    
  6. Save

5.3 Template f?r Staging Deployment

  1. Templates ? New Template
  2. Name: "Deploy to Staging"
  3. Inventory: "Production Hosts"
  4. Playbook Path: /tmp/semaphore/playbooks/deploy-staging.yml
  5. Variables:
    registry_url: registry.michaelschiemer.de
    registry_user: admin
    registry_password: <dein-registry-passwort>
    image_name: framework
    image_tag: latest
    
  6. Save

5.4 Template f?r Production Deployment

  1. Templates ? New Template
  2. Name: "Deploy to Production"
  3. Inventory: "Production Hosts"
  4. Playbook Path: /tmp/semaphore/playbooks/deploy-production.yml
  5. Variables:
    registry_url: registry.michaelschiemer.de
    registry_user: admin
    registry_password: <dein-registry-passwort>
    image_name: framework
    image_tag: latest
    
  6. Save

Schritt 6: Task ausf?hren

  1. Gehe zu Templates
  2. Klicke auf ein Template (z.B. "Run CI Tests")
  3. Klicke auf "Run"
  4. Beobachte die Ausf?hrung in Echtzeit

? Fertig!

Semaphore ist jetzt mit deinem Repository verbunden! Du kannst:

  • ? CI/CD-Tasks manuell starten
  • ? Playbooks aus dem Repository verwenden
  • ? Deployments auf deine Server ausf?hren

?? Verf?gbare Playbooks

Die folgenden Playbooks sind bereits im Repository und k?nnen in Semaphore verwendet werden:

  1. /tmp/semaphore/playbooks/ci-tests.yml - PHP Tests & Quality Checks
  2. /tmp/semaphore/playbooks/docker-build.yml - Docker Image Build & Push
  3. /tmp/semaphore/playbooks/deploy-staging.yml - Staging Deployment
  4. /tmp/semaphore/playbooks/deploy-production.yml - Production Deployment

?? Vorhandene Ansible-Playbooks

Die vorhandenen Ansible-Playbooks aus deployment/ansible/playbooks/ sind auch verf?gbar unter:

  • /tmp/semaphore/repo-playbooks/

Zum Beispiel:

  • /tmp/semaphore/repo-playbooks/deploy-update.yml
  • /tmp/semaphore/repo-playbooks/rollback.yml

?? Tipps

Docker Socket f?r Build-Tasks

Falls Docker-Build-Tasks ausgef?hrt werden sollen, f?ge den Docker Socket hinzu:

In docker-compose.yml bei Semaphore-Service:

volumes:
  - /var/run/docker.sock:/var/run/docker.sock:ro

Dann Semaphore neu starten:

docker compose restart semaphore

Git-Integration

Die Playbooks k?nnen direkt auf das Git-Repository zugreifen (HTTPS). F?r private Repositories oder SSH-Zugriff:

  1. Erstelle einen SSH-Key f?r Git in Semaphore (Keys ? New Key)
  2. F?ge den Public Key zu deinem Git-Repository hinzu
  3. Verwende SSH-URL in Playbook-Variablen:
    repo_url: git@git.michaelschiemer.de:michael/michaelschiemer.git
    

Hilfe: Weitere Details in SETUP_REPOSITORY.md und README.md