如何基于GitHub PR分支名在PR合并时自动修改文件内容且不使用GitHub Actions
实现方案(优先不使用GitHub Actions)
核心采用GitHub Webhook + 自行部署的执行脚本实现,具体步骤如下:
1. 仓库侧Webhook配置
- 进入目标GitHub仓库的
Settings→Webhooks页面,点击Add webhook Payload URL填写你自行部署的HTTP服务接口地址,Content type选择application/json- 可按需设置
Secret字段,后续服务端接收请求时可校验签名避免恶意触发 - 触发事件选择
Let me select individual events,仅勾选Pull requests选项后保存配置
2. 服务端触发逻辑
你需要自行部署一个简单的HTTP服务承接Webhook回调,核心判断逻辑如下:
- 先校验回调事件的
action字段为closed,且pull_request.merged值为true,确认是PR合并事件 - 从回调参数中提取合并的源分支名:
pull_request.head.ref - 按照你预设的规则匹配分支名,比如识别
A_前缀的分支触发对应修改逻辑
3. 文件修改与提交
匹配到触发规则后,按顺序执行以下操作:
- 拉取PR合并后的目标分支最新代码
- 读取指定文件执行数值修改,参考示例shell脚本逻辑(对应你给出的version更新需求):
# 提取file.txt第一行的版本号 old_ver=$(sed -n '1p' file.txt | grep -o 'version:[0-9.]*' | cut -d ':' -f 2) # 版本号末尾段数值加1,可按需修改为自己的计算规则 new_ver=$(echo $old_ver | awk -F '.' '{$NF += 1; print}' OFS='.') # 写入修改后的内容到原文件 sed -i "1s/version:${old_ver}/version:${new_ver}/" file.txt
- 提交修改后的文件推送到GitHub仓库即可,注意提前给服务端配置好仓库的读写权限(可使用有权限的SSH密钥或者Personal Access Token)
轻量备选方案
如果不想单独部署常驻服务,可以用云厂商的Serverless函数承接Webhook回调,执行逻辑和上面的服务端逻辑完全一致,不需要维护服务器。
内容的提问来源于stack exchange,提问作者talhaamir
相关产品推荐
相关产品推荐

