是否可开发GitHub bot实现pull request自动过滤,仅修改JS文件的PR有效
可行性结论
该需求完全可以实现,无需部署独立的Bot服务,直接使用GitHub官方提供的Actions能力即可完成自动校验过滤。
实现思路
你可以通过配置GitHub工作流,在每次PR创建、更新时自动扫描本次提交的改动文件,按照规则校验:
- 若所有改动文件均为.js后缀的JS文件,判定PR合法,允许走后续合并流程
- 若存在任意非.js后缀的文件改动,判定PR非法,直接阻断合并,同时可自动添加评论提示提交规则不符
核心配置步骤
- 在仓库根目录创建
.github/workflows/pr-validate.yml文件,作为自动校验的工作流配置 - 配置工作流触发条件为pull_request事件的opened、synchronize类型,仅PR新增/更新时触发校验
- 添加文件改动扫描逻辑,过滤所有非JS后缀的改动文件,若存在这类文件则直接返回校验失败状态
- 在仓库的分支保护设置中,开启「状态检查必须通过才可合并」规则,绑定上述校验工作流,即可实现全自动化过滤
校验逻辑参考代码
name: PR Valid Check on: pull_request: types: [opened, synchronize] jobs: validate: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Scan non-JS changed files id: file-check run: | non_js_files=$(git diff --name-only origin/${{ github.base_ref }} ${{ github.sha }} | grep -v "\.js$" || true) if [ -n "$non_js_files" ]; then echo "has_invalid_change=true" >> $GITHUB_OUTPUT else echo "has_invalid_change=false" >> $GITHUB_OUTPUT fi - name: Reject invalid PR if: steps.file-check.outputs.has_invalid_change == 'true' run: | echo "ERROR: Only JS file modifications are allowed, this PR contains non-JS file changes" exit 1
内容的提问来源于stack exchange,提问作者Aum Singhal
相关产品推荐
相关产品推荐

