# Gitea Actions Deploy für das Cockpit. # Läuft NUR bei Push auf main und deployt auf dem Homeserver, auf dem auch # Gitea und der act_runner laufen. Der Job läuft im Host-Executor (runs-on: host), # damit er Zugriff auf den Docker-Daemon und die Host-Pfade hat: # /opt/build/cockpit → Source-Checkout (Build-Context, gehört dem Runner-User) # /opt/stacks/cockpit → docker-compose.yml + .env (root-owned → via sudo) name: deploy on: push: branches: [main] concurrency: group: deploy-cockpit cancel-in-progress: false jobs: deploy: runs-on: host steps: - name: Source-Checkout auf origin/main aktualisieren run: | set -euo pipefail git -C /opt/build/cockpit fetch --prune origin git -C /opt/build/cockpit reset --hard origin/main echo "Deployed commit:" git -C /opt/build/cockpit log --oneline -1 - name: Container bauen & neu starten run: | set -euo pipefail cd /opt/stacks/cockpit sudo docker compose up -d --build --remove-orphans - name: Auf API-Health warten run: | set -euo pipefail for i in $(seq 1 36); do status=$(sudo docker inspect -f '{{.State.Health.Status}}' cockpit-api 2>/dev/null || echo "missing") echo " api health: $status" if [ "$status" = "healthy" ]; then echo "✅ cockpit-api ist healthy." exit 0 fi sleep 5 done echo "❌ cockpit-api wurde nicht rechtzeitig healthy." >&2 sudo docker logs --tail 80 cockpit-api || true exit 1