name: Deploy im-manager (Blue-Green) on: workflow_dispatch: inputs: image_tag: description: '镜像tag,留空则使用commit短哈希' required: false jobs: deploy: runs-on: deploy-host steps: - uses: actions/checkout@v4 - name: 确定镜像tag id: vars run: | TAG="${{ github.event.inputs.image_tag }}" [ -z "$TAG" ] && TAG=$(git rev-parse --short HEAD) echo "tag=$TAG" >> "$GITHUB_OUTPUT" - name: 构建镜像(前端+后端一体,自包含多阶段构建) run: docker build -t im-manager:${{ steps.vars.outputs.tag }} . - name: 蓝绿部署 env: MYSQL_DSN: ${{ secrets.MYSQL_DSN }} REDIS_ADDR: ${{ secrets.REDIS_ADDR }} REDIS_DB: ${{ secrets.REDIS_DB }} REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }} TOKEN_SECRET_KEY: ${{ secrets.TOKEN_SECRET_KEY }} run: | IMAGE=im-manager:${{ steps.vars.outputs.tag }} /opt/apps/im-manager/deploy.sh