跳到主要内容

GitLab

当 SQL 变更通过 GitLab 进行版本化管理时,CloudDM 支持将 GitLab 作为 Git Ops 变更源。在使用 GitLab 作为变更源时,需要创建专用的发布账号并授予相应的 Project 访问权限,以便 CloudDM 获取变更内容。

CloudDM 支持私有部署的 GitLab,服务地址可以使用 HTTP 或 HTTPS,也支持非标准端口和子路径部署。建议生产环境使用 HTTPS。

如何配置

  1. 使用具有集成管理权限的账号登录 CloudDM。
  2. 使用发布账号登录 GitLab,在右上角头像菜单中进入 Edit profile
  3. Access > Personal access tokens > Generate token > Legacy token,然后勾选 read_api scope,Token 只显示一次,请及时保存。
  4. 进入 CloudDM 的 集成 > Git Ops,点击 新增
  5. 选择 GitLab
  6. 填写 名称服务地址。服务地址应填写 GitLab 网页根地址,不要附加 /api/v4。例如:
    • https://gitlab.example.com
    • https://gitlab.example.com:8443/gitlab
  7. 填写 AccessToken。如果使用 HTTP 地址,需要确认明文传输 Token 的安全风险。
  8. 点击 测试 验证连接,验证通过后点击 添加

配置 WebHook

为变更流配置 WebHook 时:

  1. 在 CloudDM 变更流详情页进入 配置项 > 触发配置 > WebHook,启用 WebHook,并复制 WebHook 地址和密码。
  2. 使用发布账号登录 GitLab,进入目标 Project。
  3. 在 Project 左侧菜单中进入 Settings > Webhooks,点击 Add new webhook
  4. 将 CloudDM 生成的 WebHook 地址填写到 GitLab。
  5. 配置 WebHook 认证信息:
    • GitLab 19.1 及以上版本推荐使用 Signing token。在 GitLab 生成 Signing token 后,将只显示一次的 Token 填写到 CloudDM 的 Signing Token
    • 其他版本可以将 CloudDM 显示的密码填写到 GitLab 的 Secret token
  6. 根据变更流的触发方式选择事件:
    • Push:选择 Push events,推送到目标分支时触发变更。
    • Pull Request:选择 Merge request events,Merge Request 合并到目标分支后触发变更。
  7. 不要配置自定义 WebHook 模板。使用 HTTPS 时保持 Enable SSL verification 开启。
  8. 保存 GitLab WebHook,然后返回 CloudDM 保存触发配置。
  9. 在 GitLab WebHook 列表中使用 Test 发送测试请求,确认 CloudDM 可以正常接收事件。

使用子路径部署 GitLab 时,服务地址必须保留子路径。CloudDM 和 GitLab 还需要能够相互访问:CloudDM 需要调用 GitLab API,GitLab 需要访问 CloudDM 生成的 WebHook 地址。

WebHook 状态码说明

在 GitLab 中测试或查看 WebHook 投递记录时,可以根据 CloudDM 返回的 HTTP 状态码排查问题:

状态码含义处理方式
200CloudDM 已成功接收请求。事件与当前变更流不匹配或属于重复投递时,也会返回成功,但不会重复创建变更。无需处理。需要确认是否创建变更时,可以检查目标分支、事件类型和变更记录。
400WebHook 请求无效。常见原因包括地址参数错误、请求体为空或格式错误、请求体过大、请求体不是有效的 UTF-8、Project 或分支与变更流不匹配,以及变更流配置校验失败。重新复制 CloudDM 生成的 WebHook 地址,确认未使用自定义 WebHook 模板,并检查变更流中的 Project、目标分支和触发方式。
401WebHook 认证失败。Signing Token、Secret token、签名请求头或签名时间戳无效。确认 GitLab 和 CloudDM 中配置的是同一个 Token。使用 Signing Token 时,应重新生成并立即复制完整 Token。
404WebHook 对应的变更流或 Git Ops 发布源不存在。确认变更流和 Git Ops 配置没有被删除,然后从 CloudDM 重新复制 WebHook 地址。
500CloudDM 处理 WebHook 时发生内部错误。查看 CloudDM Console 日志,修复异常后在 GitLab 中重新投递。
503CloudDM 暂时无法从 GitLab 获取 Merge Request 合并后的 Commit SHA。检查 GitLab API、网络和 AccessToken 是否可用,恢复后重新投递。

更多配置说明请参考 GitLab Personal Access TokensGitLab Webhooks

联系我们
微信二维码

扫码添加微信,获取技术支持