CI/CD 集成
通过 Webhook 实现自动化部署
CI/CD 集成
通过 Webhook 将 Senate 接入你的 CI/CD 流程,轻松实现自动化部署。
概述
Senate 通过 Webhook 实现自动化部署——只需发送一个 HTTP POST 请求即可触发部署。
配置 Webhook
GitHub 仓库 Webhook(推荐)
最简单的方式是直接使用 GitHub 自带的 Webhook 功能:
获取 Webhook URL
- 进入 Services → 选择你的服务
- 点击 Settings 标签页
- 复制 Webhook URL

配置 GitHub
- 打开 GitHub 仓库,进入 Settings → Webhooks
- 点击 Add webhook
- 粘贴 Senate 的 Webhook URL
- Content type 选择
application/json - 触发事件选择 Just the push event 或按需选择
- 点击 Add 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 没有触发
- 检查 Webhook URL 是否正确
- 确认网络连通性(GitHub 能否访问你的 Senate 服务?)
- 查看 Senate 日志排查错误
- 确认服务设置中已启用 Webhook
部署卡住不动
- 检查镜像是否能正常拉取
- 确认容器能正常启动
- 检查健康检查配置是否合理
- 在 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
- 打开 GitHub 仓库 → Settings → Secrets and variables → Actions
- 点击 New repository secret
- 添加
SENATE_WEBHOOK_URL,值为你的 Webhook URL
生产环境审批
需要人工审批才能部署到生产环境:
jobs:
deploy-prod:
runs-on: ubuntu-latest
environment: production # 需要审批
steps:
- run: curl ${{ secrets.SENATE_PROD_WEBHOOK }}