From 05ffa628c6b7e8c5c63a99e56ba30d27deafbf71 Mon Sep 17 00:00:00 2001 From: CloudForge Dev Date: Wed, 19 Nov 2025 17:21:21 +0800 Subject: [PATCH] Changed to build image from local podman --- .gitea/workflows/build-deploy.yml | 156 ++++++++++++++++++------------ 1 file changed, 94 insertions(+), 62 deletions(-) diff --git a/.gitea/workflows/build-deploy.yml b/.gitea/workflows/build-deploy.yml index a826a68..0726efd 100644 --- a/.gitea/workflows/build-deploy.yml +++ b/.gitea/workflows/build-deploy.yml @@ -1,4 +1,4 @@ -name: Build and Deploy Backend +name: Build and Deploy Backend (Podman) on: push: @@ -6,66 +6,43 @@ on: - main jobs: - # Job 1: Build Image + # Job 1: Build with Podman build: runs-on: ubuntu-latest - timeout-minutes: 30 # 30分鐘 timeout + timeout-minutes: 20 steps: - name: Checkout uses: actions/checkout@v3 - - name: Restore kubeconfig + - name: Install Podman run: | - mkdir -p ~/.kube - echo "$KUBECONFIG_DATA" | base64 -d > ~/.kube/config - chmod 600 ~/.kube/config - env: - KUBECONFIG_DATA: ${{ secrets.KUBECONFIG }} + sudo apt-get update + sudo apt-get install -y podman + podman --version - - name: Install kubectl + - name: Build Image with Podman 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 + podman build -t cloudforge-dashboard-backend:${GITHUB_SHA:0:8} . + podman tag cloudforge-dashboard-backend:${GITHUB_SHA:0:8} cloudforge-dashboard-backend:latest - - name: Create Kaniko Build Job + - name: Save Image to TAR run: | - /usr/local/bin/kubectl apply -f - </dev/null || echo "") + + if [ -z "$POD" ]; then + echo "⚠️ No existing pod found, will create deployment first" + # 先創建 deployment (如果唔存在) + kubectl create deployment dashboard-backend \ + --image=cloudforge-dashboard-backend:latest \ + --replicas=0 \ + -n cloudforge --dry-run=client -o yaml | kubectl apply -f - + fi + + # 方法2:SSH 到 K3S node 直接 import (最快) + # 你需要設置 SSH key 到 secrets + # ssh user@k3s-node "sudo ctr -n k8s.io images import -" < /tmp/images/backend.tar + + echo "✅ Image ready to load" + + - name: Import Image via Job + run: | + # 用一個臨時 pod 來 import image + kubectl apply -f - <