Some checks failed
🚀 Build & Deploy Image / Determine Build Necessity (push) Successful in 25s
Security Vulnerability Scan / Check for Dependency Changes (push) Successful in 26s
🚀 Build & Deploy Image / Build Runtime Base Image (push) Successful in 14s
🚀 Build & Deploy Image / Run Tests & Quality Checks (push) Has been skipped
Security Vulnerability Scan / Composer Security Audit (push) Has been skipped
🚀 Build & Deploy Image / Build Docker Image (push) Successful in 11s
🚀 Build & Deploy Image / Auto-deploy to Staging (push) Failing after 44s
🚀 Build & Deploy Image / Auto-deploy to Production (push) Has been skipped
- Test commit to verify that workflow can now: - Use php-ci image with Ansible - Use ANSIBLE_VAULT_PASSWORD secret for vault decryption - Successfully deploy to staging
95 lines
2.6 KiB
Markdown
95 lines
2.6 KiB
Markdown
# CI Image auf Produktionsserver bauen
|
|
|
|
## Problem
|
|
|
|
Der Gitea Runner auf dem Produktionsserver versucht, das `php-ci:latest` Image zu pullen, aber es existiert nicht in der Registry oder lokal. Der Fehler lautet:
|
|
|
|
```
|
|
Error response from daemon: pull access denied for php-ci, repository does not exist or may require 'docker login'
|
|
```
|
|
|
|
## Lösung: Image direkt auf dem Produktionsserver bauen
|
|
|
|
### Schritt 1: Auf den Produktionsserver verbinden
|
|
|
|
```bash
|
|
ssh user@production-server
|
|
```
|
|
|
|
### Schritt 2: Zum Projektverzeichnis wechseln
|
|
|
|
```bash
|
|
cd /path/to/michaelschiemer
|
|
```
|
|
|
|
### Schritt 3: CI Image bauen
|
|
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
./build-ci-image-production.sh
|
|
```
|
|
|
|
Das Script:
|
|
- Baut das `php-ci:latest` Image
|
|
- Baut das `docker-build:latest` Image
|
|
- Lädt beide Images in den `gitea-runner-dind` Container
|
|
|
|
### Schritt 4: Verifikation
|
|
|
|
1. **Prüfe ob Images gebaut wurden:**
|
|
```bash
|
|
docker images | grep -E "php-ci|docker-build"
|
|
```
|
|
|
|
2. **Prüfe ob Images in docker-dind geladen wurden:**
|
|
```bash
|
|
docker exec gitea-runner-dind docker images | grep -E "php-ci|docker-build"
|
|
```
|
|
|
|
3. **Prüfe Runner Labels in Gitea UI:**
|
|
- Gehe zu: https://git.michaelschiemer.de/admin/actions/runners
|
|
- Der Runner sollte das `php-ci` Label zeigen
|
|
|
|
4. **Teste einen Workflow:**
|
|
- Ein Workflow mit `runs-on: php-ci` sollte jetzt funktionieren
|
|
|
|
## Alternative: Ansible Playbook verwenden
|
|
|
|
Falls Ansible auf dem Produktionsserver verfügbar ist:
|
|
|
|
```bash
|
|
cd deployment/ansible
|
|
ansible-playbook -i inventory/production.yml \
|
|
playbooks/setup-gitea-runner-ci.yml \
|
|
-e "project_root=/path/to/michaelschiemer"
|
|
```
|
|
|
|
## Troubleshooting
|
|
|
|
**Image wird nicht in docker-dind gefunden:**
|
|
- Stelle sicher, dass `gitea-runner-dind` läuft: `docker ps | grep docker-dind`
|
|
- Lade das Image manuell: `docker save php-ci:latest | docker exec -i gitea-runner-dind docker load`
|
|
|
|
**Runner zeigt php-ci Label nicht:**
|
|
- Labels können nur bei der Registration geändert werden
|
|
- Runner neu registrieren:
|
|
```bash
|
|
cd deployment/gitea-runner
|
|
./unregister.sh
|
|
./register.sh
|
|
```
|
|
|
|
**Build schlägt fehl:**
|
|
- Prüfe Docker-Logs: `docker logs gitea-runner-dind`
|
|
- Stelle sicher, dass genug Speicherplatz vorhanden ist: `df -h`
|
|
- Prüfe Docker-Daemon: `docker info`
|
|
|
|
## Hinweise
|
|
|
|
- Das Image ist ca. 1.85GB groß - der Build kann einige Minuten dauern
|
|
- Stelle sicher, dass genug Speicherplatz auf dem Server vorhanden ist
|
|
- Das Image wird lokal gebaut und muss nicht in die Registry gepusht werden (wird direkt in docker-dind geladen)
|
|
|
|
# Workflow test - deployment path change
|
|
# Test commit - verify vault password secret
|