name: Deploy to Kubernetes on: push: branches: [ main, master ] workflow_dispatch: jobs: deploy: runs-on: ubuntu-latest environment: production steps: - name: Checkout code uses: actions/checkout@v4 - name: Setup kubectl uses: azure/setup-kubectl@v3 with: version: 'v1.28.0' - name: Configure kubectl run: | mkdir -p ~/.kube echo "${{ secrets.KUBE_CONFIG }}" | base64 -d > ~/.kube/config || { echo "Base64 decode failed, trying direct copy..." echo "${{ secrets.KUBE_CONFIG }}" > ~/.kube/config } chmod 600 ~/.kube/config - name: Verify cluster connection run: | kubectl version --client kubectl cluster-info - name: Deploy to Kubernetes run: | kubectl apply -k k8s/ kubectl rollout status deployment/homepage -n homepage --timeout=300s - name: Verify deployment run: | kubectl get pods -n homepage kubectl get services -n homepage - name: Cleanup if: always() run: | rm -f ~/.kube/config