使用 PlanetScale CLI 和 GitHub Actions 工作流
在开发或测试需要修改数据库结构时,将这些修改置于一个隔离的环境中,而不是直接在生产数据库中变更,是非常有帮助的。在 PlanetScale 中,数据库分支功能使这一点成为现实。但是,如果你希望将这一工作流程更深地集成到 GitHub 的现有开发和测试流程中,该如何做呢?
在本文中,你将学习如何提高数据库生产力,以及如何设置和使用 PlanetScale CLI(也称为 pscale)与 GitHub Actions 工作流。
首先,什么是 GitHub Actions?
如果你还不了解,GitHub Actions 是一个“连续集成和连续交付 (CI/CD) 平台,能够自动化构建、测试和部署流水线。”最重要的是,GitHub Actions 与 GitHub 代码库本身紧密相关,使得能够根据代码库中的事件触发工作流变得更加方便。例如,当你打开一个 pull request(拉取请求)、创建一个分支或发生其他可触发工作流的事件时,就可以启动相应的工作流。具体可以查阅文档中的触发事件列表。
GitHub Actions 使得团队之间可以创建、共享、复用和分叉工作流。在 GitHub Actions 中,一个工作流是“一个由一个或多个作业组成的可配置的自动化过程。”
GitHub Actions 工作流旨在帮助团队快速可靠地交付软件,连接各种工具。在 PlanetScale 的场景中,我们希望团队能够提高数据库生产力。那么,接下来我们看如何将数据库与代码库的工作流自动化结合起来。
设置预建的 GitHub Actions 工作流仓库
如果你希望了解 pscale 如何通过 GitHub Actions 工作,可以查看 Johannes Nicolai 在 PlanetScale 创建的填充了 pscale 工作流辅助脚本的仓库。如果你有任何反馈或建议,可以通过该仓库提交 “issue” 或 “pull request”。
以下是这些预建的 GitHub Actions 工作流可以执行的各种操作:
- 创建一个数据库并生成表格
- 创建一个数据库分支并发起部署请求
- 合并最新打开的部署请求
- 为数据库模式添加或删除列以及索引
- 响应 pull request 评论中的特殊“魔法词”,例如“/ps-create”、“/ps-attach”或“/ps-merge”
如果你希望尝试,请按以下步骤在 GitHub 中进行设置。
尝试预建的 PlanetScale 和 GitHub Actions 工作流的步骤
- 点击仓库中的绿色“Use this template”按钮,并为新仓库命名。
- 创建仓库后,进入“Actions”选项卡。
第一步:创建数据库
这个工作流将创建一个数据库。
- 点击侧边栏中的“01 – Create Database step”。
- 选择“Run workflow”下拉菜单并点击“Run”。
- 运行后,点击主区域中的新工作流“01 – Create Database”,并选择“Create database – click here”。
- 系统将提示你点击链接进行 PlanetScale 的身份认证。你可以登录到已有账户或通过链接创建新账户。
第二步:添加操作列和索引
此工作流将创建一个新的数据库分支,并为其添加新列和索引。此外,它还会打开一个部署请求(稍后会提到)。
- 在完成数据库创建步骤后,点击“Actions”选项卡,进入“02 – Add Operation Column & Index”。
- 同样需要点击两次以运行工作流并完成 PlanetScale 身份认证。
- 运行该工作流后,可以通过 PlanetScale UI 检查更新后的模式,查看数据列和索引是否添加到数据库分支。
第三步:合并最新部署请求
此步骤将合并之前工作流中创建的部署请求。
部署请求使得能够像 GitHub 中的 pull request 一样,提出架构变更并向团队征求反馈。合并数据库部署请求和代码 pull request 的顺序通常取决于变更类型。
运行此工作流的步骤与之前工作流类似。完成后,你可以在 PlanetScale 中查看你的架构变更是否已被部署。
如何使用 pscale CLI 构建自己的 GitHub Actions 工作流
如果你希望通过 pscale 自定义工作流以符合你的开发和运维需求,需要了解以下内容:
- 工作流文件(.github/workflows/):描述 GitHub Actions 在某个事件触发工作流时运行哪些步骤。
- Shell 脚本(.pscale/cli-helper-scripts/):用于实现与 pscale 的紧密协作,处理逻辑、CLI 命令、错误处理、等待异步操作,并可在多个工作流中重复使用。
示例:创建基于开发分支的数据库分支
步骤:
- 创建文件
.github/workflows/create-branch.yml
,用于描述如何基于 GitHub 推送的分支进行动作触发。触发条件:只有分支名称以db/**
开头时运行工作流。 - 添加 Bash Shell 脚本以实现逻辑,代码如文章所述。
以下是重要的脚本和文件:
.pscale/cli-helper-scripts/use-pscale-docker-image.sh
.pscale/cli-helper-scripts/wait-for-branch-readiness.sh
.pscale/cli-helper-scripts/authenticate-ps.sh
.pscale/cli-helper-scripts/ps-create-helper-functions.sh
还需要设置 GitHub Actions 的 Secrets,例如:
PLANETSCALE_SERVICE_TOKEN
PLANETSCALE_SERVICE_TOKEN_ID
ORG_NAME
DB_NAME
想要看到哪些 GitHub Actions 工作流?
我们希望听取你的意见!现在你已经对如何结合 GitHub Actions 和 PlanetScale CLI 来自动化工作流有所了解,是否希望看到更多的示例或工作流构建教程?
哪些数据库相关的手动操作你希望能够自动化?尤其是结合分支、部署请求和无堵塞架构变更功能时。
你是否希望看到与 GitHub issues 或 pull requests 触发器相关的工作流?欢迎分享你的需求与想法!
关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台
除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接
本文链接:http://www.choupangxia.com/2025/05/20/planetscale-cli-github-actions/