From 60c097cf379930759c613420c8ed0ffdc670b285 Mon Sep 17 00:00:00 2001 From: xiaoliutral Date: Wed, 2 Sep 2026 15:31:38 +0800 Subject: [PATCH] k3s --- .github/workflows/master.yml | 67 +++++++++++++++++++++--------------- 1 file changed, 40 insertions(+), 27 deletions(-) diff --git a/.github/workflows/master.yml b/.github/workflows/master.yml index 0f6e55d..235f781 100644 --- a/.github/workflows/master.yml +++ b/.github/workflows/master.yml @@ -5,6 +5,14 @@ on: branches: - master # 监视的分支 +env: # ← 定义在这里 + TCR_REGISTRY: ccr.ccs.tencentyun.com + TCR_NAMESPACE: ideship + IMAGE_NAME: interfaceforward_api + DEPLOY_NAME: interfaceforward-api + CONTAINER_NAME: interfaceforward-api + DOCKERFILE: src/InterfaceForward.Api/Dockerfile + jobs: deploy: runs-on: ubuntu-latest @@ -12,31 +20,36 @@ jobs: - name: Checkout code uses: actions/checkout@v2 - - name: Build to Server - uses: appleboy/ssh-action@v0.1.5 - with: - host: ${{ secrets.SSH_BUILD_HOST }} - username: ${{ secrets.SSH_USERNAME }} - password: ${{ secrets.SSH_PASSWORD }} - script: | - mkdir -p /data/projects - cd /data/projects - git clone git@github.com:xiaoliutral/itfx.git - cd itfx - git pull origin master - docker build -t interfaceforward_api:latest -f src/InterfaceForward.Api/Dockerfile . - # 标记镜像 - docker tag interfaceforward_api:latest registry.nanafa.com/interfaceforward_api:latest - # 推送镜像 - docker push registry.nanafa.com/interfaceforward_api:latest - - name: Deploy to Server - uses: appleboy/ssh-action@v0.1.5 - with: - host: ${{ secrets.SSH_MANAGER_HOST }} - username: ${{ secrets.SSH_USERNAME }} - password: ${{ secrets.SSH_PASSWORD }} - script: | - cd /data - docker stack deploy -c api.yml api # yml没变化不会更新 - docker service update --force --image registry.nanafa.com/interfaceforward_api:latest api_itfx # 一定要和service name一致 + - uses: docker/setup-buildx-action@v3 + + - name: Login to TCR + uses: docker/login-action@v3 + with: + registry: ${{ env.TCR_REGISTRY }} + username: ${{ secrets.TCR_USERNAME }} + password: ${{ secrets.TCR_PASSWORD }} + + - name: Build and push + uses: docker/build-push-action@v5 + with: + context: . + file: ${{ env.DOCKERFILE }} + push: true + tags: | + ${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ github.sha }} + ${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:latest + cache-from: type=gha + cache-to: type=gha,mode=max + + - name: Deploy to k3s + uses: appleboy/ssh-action@v1.0.3 + with: + host: ${{ secrets.SSH_K3S_HOST }} + username: ${{ secrets.SSH_K3S_USERNAME }} + password: ${{ secrets.SSH_K3S_PASSWORD }} + script: | + export KUBECONFIG=/etc/rancher/k3s/k3s.yaml + IMG="${{ env.TCR_REGISTRY }}/${{ env.TCR_NAMESPACE }}/${{ env.IMAGE_NAME }}:${{ github.sha }}" + kubectl -n prod set image deploy/${{ env.DEPLOY_NAME }} ${{ env.CONTAINER_NAME }}="$IMG" + kubectl -n prod rollout status deploy/${{ env.DEPLOY_NAME }} --timeout=180s