From 9878d60060dfc8b332c1c89590f863f670831645 Mon Sep 17 00:00:00 2001 From: Your Name Date: Sat, 18 Apr 2026 11:35:11 +0800 Subject: [PATCH] fix:dev cicd --- .gitea/workflows/develop.yml | 59 +++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 18 deletions(-) diff --git a/.gitea/workflows/develop.yml b/.gitea/workflows/develop.yml index 47682c7..981103b 100644 --- a/.gitea/workflows/develop.yml +++ b/.gitea/workflows/develop.yml @@ -2,37 +2,60 @@ name: develop on: push: - branches: [develop] + branches: ["develop"] jobs: - develop: + build-and-push: + name: Build and push to Aliyun ACR runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - name: Checkout code + uses: actions/checkout@v4 - - name: 构建镜像 - run: | - docker build -t react-app . - docker save react-app | gzip > app.tar.gz + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 - - name: 复制到服务器并运行 - uses: appleboy/scp-action@v0.1.5 + - name: Login to Aliyun Container Registry + uses: docker/login-action@v3 with: - host: ${{ secrets.HOST }} - username: ${{ secrets.USERNAME }} - key: ${{ secrets.SSH_KEY }} - source: "app.tar.gz" - target: "/tmp/" + registry: ${{ secrets.ALIYUN_REGISTRY }} + username: ${{ secrets.ALIYUN_USERNAME }} + password: ${{ secrets.ALIYUN_PASSWORD }} - - name: 部署 + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: | + ${{ secrets.ALIYUN_REGISTRY }}/${{ secrets.ALIYUN_NAMESPACE }}/${{ secrets.ALIYUN_REPO }}:latest + ${{ secrets.ALIYUN_REGISTRY }}/${{ secrets.ALIYUN_NAMESPACE }}/${{ secrets.ALIYUN_REPO }}:${{ github.sha }} + + deploy: + name: Deploy to server + runs-on: ubuntu-latest + needs: build-and-push # 等构建推送完成后再部署 + steps: + - name: Deploy via SSH uses: appleboy/ssh-action@v1.0.3 with: host: ${{ secrets.HOST }} username: ${{ secrets.USERNAME }} key: ${{ secrets.SSH_KEY }} + port: 22 script: | - gunzip -c /tmp/app.tar.gz | docker load + # 登录阿里云镜像仓库 + docker login --username=${{ secrets.ALIYUN_USERNAME }} --password=${{ secrets.ALIYUN_PASSWORD }} ${{ secrets.ALIYUN_REGISTRY }} + # 拉取最新镜像 + docker pull ${{ secrets.ALIYUN_REGISTRY }}/${{ secrets.ALIYUN_NAMESPACE }}/${{ secrets.ALIYUN_REPO }}:latest + # 停止并删除旧容器(如果存在) docker stop react-app 2>/dev/null || true docker rm react-app 2>/dev/null || true - docker run -d --name react-app -p 8080:80 --restart always react-app - rm -f /tmp/app.tar.gz + # 运行新容器 + docker run -d \ + --name react-app \ + --restart always \ + -p 8080:80 \ + ${{ secrets.ALIYUN_REGISTRY }}/${{ secrets.ALIYUN_NAMESPACE }}/${{ secrets.ALIYUN_REPO }}:latest + # 清理无用镜像 + docker image prune -f