diff --git a/.gitea/workflows/test.yml b/.gitea/workflows/test.yml index b2b083f..62e24f2 100644 --- a/.gitea/workflows/test.yml +++ b/.gitea/workflows/test.yml @@ -29,21 +29,25 @@ jobs: docker push ${IMAGE_NAME}:latest docker push ${IMAGE_NAME}:${SHA_TAG} - - # 新增步骤:因为在同一台机器,直接在本地运行 kubectl 部署 - - name: 本地触发 K3s 灰度发布 - run: | - SHA_TAG="${{ steps.vars.outputs.sha_short }}" - - echo "正在应用本地基础设施配置..." - # 1. 应用 /home/ai/k3s 目录下的资源清单 - kubectl apply -f /home/ai/k3s/nextjs-traefik-gray.yaml - - echo "正在更新灰度版本镜像至: ${SHA_TAG}" - # 2. 动态修改灰度版的镜像标签,触发 Traefik 灰度滚动更新 - kubectl set image deployment/nextjs-app-canary nextjs=192.168.10.236:31051/nextjs-app:${SHA_TAG} - - # 3. 等待灰度 Pod 启动成功(超时时间 60 秒) - kubectl rollout status deployment/nextjs-app-canary --timeout=60s - - echo "本地灰度发布成功!当前新标签 [${SHA_TAG}] 已切入 Traefik 10% 流量。" \ No newline at end of file + # 核心解决步骤:通过 SSH 穿透容器,在宿主机本地执行 kubectl + - name: 穿透容器:在宿主机本地触发 K3s 灰度发布 + uses: appleboy/ssh-action@v1.0.3 + with: + host: 192.168.10.236 + username: root + key: clkj123 + script: | + # 此时以下命令全部在宿主机物理机上直接运行,绝不会报 command not found + SHA_TAG="${{ steps.vars.outputs.sha_short }}" + + echo "1. 正在应用物理机 /home/ 目录下的基础设施配置..." + kubectl apply -f /home/ai/k3s/nextjs-traefik-gray.yaml + + echo "2. 正在更新 K3s 灰度版本镜像至: ${SHA_TAG}" + kubectl set image deployment/nextjs-app-canary nextjs=192.168.10.236:31051/nextjs-app:${SHA_TAG} + + echo "3. 等待灰度 Pod 滚动更新完成..." + kubectl rollout status deployment/nextjs-app-canary --timeout=60s + + echo "【发布成功】新标签 [${SHA_TAG}] 已就绪,已切入 Traefik Header [version: canary] 路由!" + \ No newline at end of file