name: 构建Docker镜像 on: [ push ] jobs: build: env: RUNNER_TOOL_CACHE: /toolcache runs-on: ubuntu-latest steps: - name: 检出代码 uses: actions/checkout@v4 - name: 构建Docker镜像 run: docker build -t dypid:latest . - name: 导出镜像 run: mkdir release && docker save -o release/dypid.tar dypid:latest - name: 上传镜像 uses: actions/upload-artifact@v3 with: name: dypid-release path: release/ deploy: env: RUNNER_TOOL_CACHE: /toolcache needs: build runs-on: ubuntu-latest steps: - name: 下载镜像 uses: actions/download-artifact@v3 with: name: dypid-release path: release - name: 安装sshpass工具 run: | apt update apt install -y sshpass - name: 部署程序到服务器 env: SSH_HOST: ${{ secrets.SSH_HOST }} SSH_USER: ${{ secrets.SSH_USER }} SSH_PASSWORD: ${{ secrets.SSH_PASSWORD }} DEPLOY_DIR: "/data/dypid" run: | # 上传新镜像 sshpass -p "$SSH_PASSWORD" scp release/dypid.tar $SSH_USER@$SSH_HOST:/tmp/dypid.tar # 重启程序 sshpass -p "$SSH_PASSWORD" ssh $DEPLOY_USER@$DEPLOY_HOST \ " docker load -i /tmp/dypid.tar \ && cd $DEPLOY_DIR \ && docker compose up -d \ "