原文地址 https://www.bytebase.com/docs/tutorials/github-ci/
教程库:https://github.com/bytebase/github-action-example
开发者们喜欢将 Schema 变更脚本与应用程序代码一起保存在 Git 中,这样变更脚本就能像应用程序代码一样接受审核和版本控制,但仍需将变更脚本手动粘贴到 SQL 客户端,或要求 DBA 针对目标数据库运行该脚本。这样做既效率低下,又容易出错:
- 如果错贴 / 漏贴脚本怎么办?
- 如果对错误的数据库运行了脚本怎么办?
本教程教你使用 GitHub Actions 和 Bytebase API 实现数据库 Schema 变更的自动化。
以上是一个典型的工作流:
- 开发者创建包含变更脚本的 PR 后,触发 GitHub 调用 Bytebase SQL Review API。
- TL 批准 PR。
- GitHub 创建 Bytebase 的发布实例,该实例包含迁移脚本的变化。
- 根据所配置的策略,可能需要 DBA 手动批准和发布。GitHub 先阻止 PR 合并,直到 Bytebase 发布 Schema 变更。这种设置可确保 PR 同时包含代码和 Schema 变更时,在代码部署之前应用 Schema 变更。
- Bytebase 部署 Schema 变更,并将问题标记为「完成」。
- PR 重新运行变更状态检查。
- 检查后出现绿色标记,表示 PR 可以合并。
(一)准备 Bytebase
假设 Bytebase 运行于 https://bytebase.example.com/。首先,我们将设置必要的数据,以支持我们的 API 交互。
服务账户: 作为管理员,添加一个具有 Workspace DBA 角色的服务账户 ci@service.bytebase.com,用于验证 API 调用。
为限制服务账户的权限,可以选择授予工作区成员而非工作区 DBA,再在特定项目中,授予该账户创建实例的权限。
项目中的数据库:我们有一个项目 Example 和一个数据库 example。