PR合并后,如何在Push触发的Action中获取标签及传递信息?
问题解答
合并后Push触发的Action能直接拿到PR的标签吗?
不行。Push事件的上下文里只包含代码提交哈希、目标分支、提交信息这类代码相关数据,不会附带原PR的标签、描述这类PR专属元数据,所以没法直接获取。
那怎么把PR的信息传递给合并后的Push Action?
有几种靠谱的实现方式:
1. 提前把PR信息写入仓库文件
在PR的pull_request事件触发的Action流程里,把PR的标签、编号、标题这些信息写入仓库里的一个专门文件(比如.pr-info.json),再把这个文件加到PR的提交中。等PR合并后,Push触发的Action就能直接读取这个文件,拿到原PR的所有预设信息。
注意:可以在Push Action处理完后删除该文件,避免长期留在代码库中。
2. 通过提交信息关联PR查询
GitHub默认在合并PR时,会把PR编号加到合并提交的信息里(比如Merge pull request #123 from xxx/xxx)。你可以在Push Action里:
- 用
git log --oneline -1拿到最新的合并提交信息 - 用正则匹配
#\d+提取PR编号 - 用GitHub CLI的
gh pr view <PR编号> --json labels命令(需在Action里配置GH_TOKEN权限)查询该PR的标签,就能拿到some标签了。
3. 临时存储PR信息到GitHub环境(不推荐)
在PR处理的Action里,调用GitHub API把PR标签存到仓库的临时环境变量或秘密里,合并后的Push Action再读取。但这种方式有有效期限制,配置也麻烦,一般不如前两种实用。
总结
Push事件本身无法携带PR的标签信息,得靠提前写入元文件或者通过PR编号反向API查询这两种方式来获取原PR的相关数据。
内容的提问来源于stack exchange,提问作者Opal
相关产品推荐
相关产品推荐

