49 lines
1.1 KiB
YAML
49 lines
1.1 KiB
YAML
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 |