# ?? Quick Start: Semaphore mit Repository verbinden Kurze Schritt-f?r-Schritt-Anleitung, um Semaphore mit deinem Git-Repository zu verbinden. ## Schritt 1: Semaphore starten ```bash cd deployment/stacks/semaphore cp env.example .env ``` **WICHTIG**: Generiere einen Encryption Key: ```bash head -c32 /dev/urandom | base64 ``` Kopiere den Key und setze ihn in `.env`: ```env SEMAPHORE_ACCESS_KEY_ENCRYPTION= ``` ```bash 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 ``` 3. 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`): ```bash 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"): ```yaml 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**: ```yaml repo_url: https://git.michaelschiemer.de/michael/michaelschiemer.git repo_branch: main registry_url: registry.michaelschiemer.de registry_user: admin registry_password: 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**: ```yaml registry_url: registry.michaelschiemer.de registry_user: admin registry_password: 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**: ```yaml registry_url: registry.michaelschiemer.de registry_user: admin registry_password: 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: ```yaml volumes: - /var/run/docker.sock:/var/run/docker.sock:ro ``` Dann Semaphore neu starten: ```bash 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: ```yaml repo_url: git@git.michaelschiemer.de:michael/michaelschiemer.git ``` --- **Hilfe**: Weitere Details in `SETUP_REPOSITORY.md` und `README.md`