name: cloudmon GitOps Deploy on: push: branches: [ "main" ] workflow_dispatch: jobs: build-and-deploy: runs-on: ubuntu-latest container: catthehacker/ubuntu:act-latest steps: - name: Checkout Code uses: actions/checkout@v4 - name: Trust Local Nginx Certificate Inside Container run: | mkdir -p /usr/local/share/ca-certificates/ cp nginx_ssl/nginx.crt /usr/local/share/ca-certificates/nginx-sandbox.crt 2>/dev/null || echo "Nutze Workspace-Zertifikat" update-ca-certificates # Nutzt dein PAT für den schnellen, unkomplizierten Push via localhost:3005 - name: Log in to Local Registry run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login localhost:3005 -u ${{ github.actor }} --password-stdin # Baut das schlanke Python-Image für das Dashboard - name: Build Dashboard Image run: | docker build -t localhost:3005/${{ github.repository }}:${{ github.sha }} . docker build -t localhost:3005/${{ github.repository }}:latest . # Schiebt das Image über das unverschlüsselte Socket-Tor hoch - name: Push Dashboard Image run: | docker push localhost:3005/${{ github.repository }}:${{ github.sha }} docker push localhost:3005/${{ github.repository }}:latest # Bereitet die echten K3s-Schlüssel aus dem automatischen Secret vor - name: Prepare Kubernetes Access run: | echo "${{ secrets.KUBECONFIG_DATA }}" > ./kind_kubeconfig chmod 600 ./kind_kubeconfig # Bereinigt alte Reste und zündet das dezentrale Terraform-Zentral-Binary - name: Terraform Deploy run: | docker exec local-k3s-platform kubectl delete deployment cloudmon service cloudmon-service ingress-v1 cloudmon-ingress -n default --ignore-not-found=true 2>/dev/null || true terraform init terraform apply -auto-approve -var="app_version=${{ github.sha }}" - name: Verify Dashboard Health run: | echo "Warte auf die cloudmon-Pods und das Ingress-Routing..." sleep 10 # Testet den Zugriff mit dem passenden Host-Header über das interne Netz curl --fail --connect-timeout 5 -H "Host: cloudmon.local" http://local-k3s-platform:80/ || exit 1 echo "Erfolg: Das Boday-IT cloudmon Dashboard läuft fehlerfrei im Cluster!"