From 749844ea74de7686258acd7daebe4e799d96e4ad Mon Sep 17 00:00:00 2001 From: CloudForge Dev Date: Wed, 19 Nov 2025 17:13:31 +0800 Subject: [PATCH] Add kubectl installation 4 --- .gitea/workflows/build-deploy.yml | 157 +++++++++++++++++++++--------- 1 file changed, 113 insertions(+), 44 deletions(-) diff --git a/.gitea/workflows/build-deploy.yml b/.gitea/workflows/build-deploy.yml index b374a64..a826a68 100644 --- a/.gitea/workflows/build-deploy.yml +++ b/.gitea/workflows/build-deploy.yml @@ -6,57 +6,126 @@ on: - main jobs: - build-and-deploy: + # Job 1: Build Image + build: runs-on: ubuntu-latest + timeout-minutes: 30 # 30分鐘 timeout steps: - - name: Restore kubeconfig - run: | - mkdir -p ~/.kube - echo $KUBECONFIG_DATA | base64 -d > ~/.kube/config - chmod 600 ~/.kube/config - env: - KUBECONFIG_DATA: ${{ secrets.KUBECONFIG }} + - name: Checkout + uses: actions/checkout@v3 - - name: Checkout - uses: actions/checkout@v3 + - name: Restore kubeconfig + run: | + mkdir -p ~/.kube + echo "$KUBECONFIG_DATA" | base64 -d > ~/.kube/config + chmod 600 ~/.kube/config + env: + KUBECONFIG_DATA: ${{ secrets.KUBECONFIG }} - - name: Install kubectl - run: | - curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl" - chmod +x kubectl - sudo mv kubectl /usr/local/bin/kubectl + - name: Install kubectl + run: | + curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl" + chmod +x kubectl + sudo mv kubectl /usr/local/bin/kubectl - - name: Build & Deploy with Kaniko (all in one) - run: | - /usr/local/bin/kubectl apply -f - < ~/.kube/config + chmod 600 ~/.kube/config + env: + KUBECONFIG_DATA: ${{ secrets.KUBECONFIG }} - /usr/local/bin/kubectl delete job build-backend-${GITHUB_SHA:0:8} -n cloudforge + - name: Install kubectl + run: | + curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl" + chmod +x kubectl + sudo mv kubectl /usr/local/bin/kubectl + + - name: Update Deployment + run: | + /usr/local/bin/kubectl set image deployment/dashboard-backend \ + backend=cloudforge-dashboard-backend:${GITHUB_SHA:0:8} \ + -n cloudforge \ + --record + + - name: Wait for Rollout (10 min) + run: | + /usr/local/bin/kubectl rollout status deployment/dashboard-backend \ + -n cloudforge \ + --timeout=600s + + # Job 3: Verify & Cleanup + verify: + runs-on: ubuntu-latest + needs: deploy # 等 deploy job 完成 + timeout-minutes: 10 + + steps: + - name: Restore kubeconfig + run: | + mkdir -p ~/.kube + echo "$KUBECONFIG_DATA" | base64 -d > ~/.kube/config + chmod 600 ~/.kube/config + env: + KUBECONFIG_DATA: ${{ secrets.KUBECONFIG }} + + - name: Install kubectl + run: | + curl -LO "https://dl.k8s.io/release/v1.28.0/bin/linux/amd64/kubectl" + chmod +x kubectl + sudo mv kubectl /usr/local/bin/kubectl + + - name: Verify Pods Running + run: | + /usr/local/bin/kubectl get pods -n cloudforge + /usr/local/bin/kubectl get deployment dashboard-backend -n cloudforge + + - name: Cleanup Build Job + run: | + /usr/local/bin/kubectl delete job build-backend-${GITHUB_SHA:0:8} -n cloudforge || true + + - name: Show Logs + run: | + /usr/local/bin/kubectl logs deployment/dashboard-backend -n cloudforge --tail=50