如何在合并PR时运行PR特有的自定义命令



我想知道是否有任何方法可以完成以下操作。说我有一个";开放数据";repo,它允许人们提交内容。repo保存所有数据,并在PR中审查对结构化JSON/YAML的更改。但由于我在无服务器系统(如Vercel(中,我需要在分支合并时将对数据的更改上传到生产数据库。因此,在PR中应该需要一个自定义的数据迁移,它在PR被批准和合并时运行。

如何才能做到这一点?作为一个解决方案,我所能想象的就是有一个特殊的";代码块";在markdown中添加一些JSON配置,解释要为数据迁移运行什么脚本,然后将标记的代码片段作为注释添加到PR中,然后解析PR注释并确定要从中运行什么脚本。但这当然(看起来(是一个超级黑客,所以有正确的方法来做这样的事情吗?

另一种选择是在合并PR后必须手动运行脚本/命令,但理想情况下会有一种更自动的方法。

GitHub本身可以通过操作在各种事件上运行代码。操作通过存储库中目录.github/workflows中的YAML文件进行配置。与分支相关的某些操作使用该分支中的工作流文件,而"全局"操作使用默认分支中的工作流程文件(通常称为main,对于较旧的存储库称为master(。

例如,每当main分支更新时(无论是从拉请求合并还是直接推送(,此工作流都会运行bin/update-production-database

name: Update database
on:
push:
branches:
- main
jobs:
update-database:
runs-on: ubuntu-latest
steps:
- run: bin/update-production-database

请参阅使用GitHub操作进行部署中的更多示例。若要传递访问数据库所需的凭据,请设置加密的机密。

要仅在PR合并中运行作业而不在其他推送中运行作业,请参阅在拉取请求合并时运行工作流。

如果你使用Vercel(我对此一无所知(,它声称它会"自动部署你的GitHub项目",因此可能会有一个内置的解决方案(要么使用操作使触发器来自GitHub,要么使用Vercel拥有的某个轮询GitHub的服务器(。

最新更新