my-app-sandbox/.github/workflows/deploy.yml
bast 08633710b4
Some checks failed
Build, Push and GitOps Deploy / test-and-deploy (push) Failing after 15s
.github/workflows/deploy.yml aktualisiert
2026-10-31 18:58:43 +00:00

65 lines
2.4 KiB
YAML

name: Build, Push and GitOps Deploy
on:
push:
branches: [ "main" ]
workflow_dispatch:
jobs:
test-and-deploy:
runs-on: ubuntu-latest
container: catthehacker/ubuntu:act-latest
steps:
- name: Checkout Code
uses: actions/checkout@v4
- name: Activate Included Terraform Binary
run: |
mv ./terraform /usr/local/bin/terraform 2>/dev/null || echo "Nutze vorhandenes File"
chmod +x /usr/local/bin/terraform
terraform --version
- 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
- name: Log in to Local Registry
run: echo "${{ secrets.REGISTRY_TOKEN }}" | docker login localhost:3005 -u ${{ github.actor }} --password-stdin
- name: Inject Version into Dockerfile
run: sed -i "s/{{APP_VERSION}}/${{ github.sha }}/g" Dockerfile
- name: Build App Image
run: |
docker build -t localhost:3005/${{ github.repository }}:${{ github.sha }} .
docker build -t localhost:3005/${{ github.repository }}:latest .
- name: Push App Image
run: |
docker push localhost:3005/${{ github.repository }}:${{ github.sha }}
docker push localhost:3005/${{ github.repository }}:latest
# --- DIE OFFIZIELLE INFRASTRUKTUR-RETTUNG ---
# Schreibt die echten Cluster-Zugangsdaten direkt sicher in den Workspace
- name: Prepare Kubernetes Access
run: |
echo "${{ secrets.KUBECONFIG_DATA }}" > ./kind_kubeconfig
chmod 600 ./kind_kubeconfig
- name: Terraform Deploy
run: |
terraform init
# KORRIGIERT: Bereinigter, nativer Apply-Lauf.
# Wir nutzen -replace, falls Ressourcen gezielt neu aufgesetzt werden müssen,
# oder lassen Terraform bestehende Ressourcen via ID direkt überschreiben.
terraform apply -auto-approve -var="app_version=${{ github.sha }}"
- name: Verify App Health
run: |
echo "Warte auf das Ingress-Routing..."
sleep 15
curl --fail --connect-timeout 5 http://local-k3s-platform:80/ || exit 1
echo "Erfolg: Die App läuft fehlerfrei nach dem Update!"