name: Deploy Backend (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: 构建镜像(从本仓库源码编译,非下载官方release) run: docker build -t im-server:${{ steps.vars.outputs.tag }} -f docker/tinode/Dockerfile.build . - name: 蓝绿部署 env: MYSQL_DSN: ${{ secrets.MYSQL_DSN }} REDIS_ADDR: ${{ secrets.REDIS_ADDR }} REDIS_PASSWORD: ${{ secrets.REDIS_PASSWORD }} API_KEY_SALT: ${{ secrets.API_KEY_SALT }} AUTH_TOKEN_KEY: ${{ secrets.AUTH_TOKEN_KEY }} UID_ENCRYPTION_KEY: ${{ secrets.UID_ENCRYPTION_KEY }} ADMIN_INTERNAL_API_BASE_URL: ${{ secrets.ADMIN_INTERNAL_API_BASE_URL }} ADMIN_INTERNAL_API_SECRET: ${{ secrets.ADMIN_INTERNAL_API_SECRET }} INTERNAL_API_HOTGO_SECRET: ${{ secrets.INTERNAL_API_HOTGO_SECRET }} run: | IMAGE=im-server:${{ steps.vars.outputs.tag }} /opt/apps/im-server/deploy.sh