PR合并时如何触发GitHub Action运行并提取存储PR描述内容
解答
完全可以仅通过GitHub Actions原生能力实现需求,无需额外调用API或配置外置webhook,具体实现方案如下:
1. 触发规则配置
仅在PR合并时触发工作流,通过配置pull_request事件的closed类型,再加合并状态判断即可:
on: pull_request: types: - closed jobs: process-merged-pr: # 仅当PR是合并状态时才执行任务 if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: # 后续执行逻辑
2. 获取PR描述内容
GitHub Actions内置的事件上下文变量直接提供PR全量字段,无需调用API即可直接读取:
- PR描述内容对应变量:
${{ github.event.pull_request.body }} - 其他可同步获取的关联字段包括PR编号
${{ github.event.pull_request.number }}、PR标题${{ github.event.pull_request.title }}、PR提交者${{ github.event.pull_request.user.login }}等
3. 数据存储方案
根据后续使用场景选择对应存储方式,均无需额外工具:
- 同工作流后续步骤使用:直接将内容写入环境变量、步骤输出或本地临时文件即可直接读取
- 跨工作流或后续随时取用:使用官方内置的
actions/upload-artifact操作将PR数据存储为Actions构件,可自定义保留时长,后续需要时用actions/download-artifact操作直接读取
完整示例配置
on: pull_request: types: - closed jobs: save-pr-data: if: github.event.pull_request.merged == true runs-on: ubuntu-latest steps: - name: 导出PR内容到本地文件 run: | # 写入PR描述,toJSON可避免特殊字符导致的bash语法错误 echo '${{ toJSON(github.event.pull_request.body) }}' > pr_description.txt # 写入其他关联字段 echo "PR编号:${{ github.event.pull_request.number }}" >> pr_description.txt echo "PR标题:${{ github.event.pull_request.title }}" >> pr_description.txt - name: 上传PR数据为长期可访问构件 uses: actions/upload-artifact@v4 with: name: 已合并PR数据 path: pr_description.txt retention-days: 30 # 自定义保留30天,默认保留90天
内容的提问来源于stack exchange,提问作者Nanu
相关产品推荐
相关产品推荐

