Senate

CI/CD 集成

通过 Webhook 实现自动化部署

CI/CD 集成

通过 Webhook 将 Senate 接入你的 CI/CD 流程,轻松实现自动化部署。

概述

Senate 通过 Webhook 实现自动化部署——只需发送一个 HTTP POST 请求即可触发部署。

配置 Webhook

GitHub 仓库 Webhook(推荐)

最简单的方式是直接使用 GitHub 自带的 Webhook 功能:

获取 Webhook URL

  1. 进入 Services → 选择你的服务
  2. 点击 Settings 标签页
  3. 复制 Webhook URL

服务设置中的 Webhook URL

配置 GitHub

  1. 打开 GitHub 仓库,进入 SettingsWebhooks
  2. 点击 Add webhook
  3. 粘贴 Senate 的 Webhook URL
  4. Content type 选择 application/json
  5. 触发事件选择 Just the push event 或按需选择
  6. 点击 Add webhook 保存

GitHub Webhook 配置

配置完成后,每次推送代码都会自动触发部署。

请妥善保管 Webhook URL,任何获得此链接的人都可以触发部署。

Webhook URL 格式

每个服务都有独立的 Webhook URL:

https://senate.example.com/api/services/<service-id>/deploy?token=<secret-token>

手动触发

也可以通过 curl 手动触发部署:

curl https://senate.example.com/api/services/<service-id>/deploy?token=<secret-token>

常见问题

Webhook 没有触发

  1. 检查 Webhook URL 是否正确
  2. 确认网络连通性(GitHub 能否访问你的 Senate 服务?)
  3. 查看 Senate 日志排查错误
  4. 确认服务设置中已启用 Webhook

部署卡住不动

  1. 检查镜像是否能正常拉取
  2. 确认容器能正常启动
  3. 检查健康检查配置是否合理
  4. 在 Senate 控制台查看部署日志

进阶:使用 GitHub Actions

如果你需要更精细的控制(比如先跑测试、构建镜像再部署),可以使用 GitHub Actions 工作流。

基础部署

创建 .github/workflows/deploy.yml

name: Deploy to Senate

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 触发部署
        run: |
          curl ${{ secrets.SENATE_WEBHOOK_URL }}

构建镜像后部署

先构建并推送镜像,再触发部署:

name: Build and Deploy

on:
  push:
    branches: [main]

jobs:
  build-and-deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: 登录 Docker Hub
        uses: docker/login-action@v3
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_TOKEN }}
      
      - name: 构建并推送镜像
        uses: docker/build-push-action@v5
        with:
          push: true
          tags: myuser/myapp:${{ github.sha }}
      
      - name: 部署到 Senate
        run: |
          curl "${{ secrets.SENATE_WEBHOOK_URL }}

多环境部署

根据分支部署到不同环境:

name: Deploy

on:
  push:
    branches:
      - main
      - develop

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: 部署到测试环境
        if: github.ref == 'refs/heads/develop'
        run: curl ${{ secrets.SENATE_STAGING_WEBHOOK }}
      
      - name: 部署到生产环境
        if: github.ref == 'refs/heads/main'
        run: curl ${{ secrets.SENATE_PROD_WEBHOOK }}

配置 GitHub Secrets

  1. 打开 GitHub 仓库 → SettingsSecrets and variablesActions
  2. 点击 New repository secret
  3. 添加 SENATE_WEBHOOK_URL,值为你的 Webhook URL

生产环境审批

需要人工审批才能部署到生产环境:

jobs:
  deploy-prod:
    runs-on: ubuntu-latest
    environment: production  # 需要审批
    steps:
      - run: curl ${{ secrets.SENATE_PROD_WEBHOOK }}

相关文档

目录