如何创建GitHub Action实现仅PR带「Ready For Merge」标签时启用绿色合并按钮
实现方案说明
可以实现该需求,核心思路是通过GitHub Action做自定义状态检查,配合仓库的分支保护规则自动禁用不符合要求的PR的合并按钮,具体实现步骤如下:
- 第一步:配置目标分支的分支保护规则
进入仓库的Settings-Branches-Branch protection rule,给需要管控的核心分支(比如main、master)新增保护规则,开启Require status checks to pass before merging选项,这是让GitHub识别自定义检查结果、自动控制合并按钮状态的基础前提。 - 第二步:编写GitHub Action工作流
在仓库的.github/workflows目录下新建pr-merge-check.yml文件,写入如下逻辑的工作流配置:
这个工作流会在PR打开、标签增减、PR内容更新时自动触发,只要PR没有携带name: PR Merge Permission Check on: pull_request: types: [opened, labeled, unlabeled, synchronize] branches: [main] # 替换成你要管控的目标分支 jobs: check-merge-ready-tag: runs-on: ubuntu-latest steps: - name: Check if PR has Ready For Merge tag if: ${{ !contains(github.event.pull_request.labels.*.name, 'Ready For Merge') }} run: exit 1Ready For Merge标签,检查就会报错失败。 - 第三步:绑定检查规则
先手动触发一次这个工作流让GitHub识别到该检查项,之后回到分支保护规则的设置页,在Require status checks to pass before merging的搜索框里找到check-merge-ready-tag这个检查项,设置为必须通过的检查即可。
完成配置后,所有指向目标分支的PR只要没有Ready For Merge标签,对应的检查就会失败,合并按钮会自动置灰无法点击,只有打上对应标签后检查通过,才能正常合并。如果需要避免管理员绕过规则,还可以在分支保护规则中开启「禁止管理员绕过上述限制」的对应选项。
内容的提问来源于stack exchange,提问作者Nour El-Deen Abou El-Kassem
相关产品推荐
相关产品推荐

