- 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
202 lines
5.0 KiB
Markdown
202 lines
5.0 KiB
Markdown
# ?? 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=<dein-generierter-key>
|
|
```
|
|
|
|
```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: <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**:
|
|
```yaml
|
|
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**:
|
|
```yaml
|
|
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:
|
|
```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`
|