You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 00:36:03