Github Actions获取PR标题为空,CI工作流配置问题求助
问题解答
你的推断完全正确
工作流只能访问触发当前运行的事件上下文:
- 当工作流由
push事件触发时,github.event里只有推送相关字段,不存在pull_request对象,所以${{ github.event.pull_request.title }}会返回空值。 - 只有当工作流由
pull_request类事件(比如PR创建、更新、合并)触发时,才能访问github.event.pull_request下的所有字段。
修正后的CI配置(满足需求)
以下配置同时实现你的两个触发条件,并且能正确获取PR标题和描述:
name: Continuous Integration on: # 1. PR合并至main分支时触发(仅监听main分支的push事件) push: branches: [main] # 2. PR有推送/更新操作时触发(覆盖创建、推送新提交、重新打开PR场景) pull_request: types: [opened, synchronize, reopened] branches: [main] # 可选:限定只针对目标为main的PR jobs: ci: runs-on: self-hosted env: # 根据触发事件类型动态赋值PR信息 PR_TITLE: ${{ github.event_name == 'pull_request' && github.event.pull_request.title || github.event.head_commit.message }} PR_DESCRIPTION: ${{ github.event_name == 'pull_request' && github.event.pull_request.body || github.event.head_commit.message }} steps: - uses: actions/checkout@v3 with: fetch-depth: 0 # 可选:若需完整提交历史用于测试/检查,添加此配置 - name: 打印PR信息 run: | echo "PR标题: $PR_TITLE" echo "PR描述: $PR_DESCRIPTION" - name: 设置Python环境 uses: actions/setup-python@v4 with: python-version: "3.11" - name: 安装依赖 run: | python -m pip install --upgrade pip pip install pytest mypy # 按需添加项目其他依赖 - name: 单元测试与代码检查 run: | pytest mypy . # 指定代码检查目录,示例为当前目录 - name: 成功后操作 if: success() run: echo "CI执行成功"
关键说明
触发事件调整:
push事件限定main分支,精准对应PR合并到main的场景。pull_request事件监听opened/synchronize/reopened,覆盖PR推送更新的所有需求场景。
PR信息动态适配:
- 触发事件为
pull_request时,直接从github.event.pull_request取标题(title)和描述(body)。 - 触发事件为
push(PR合并)时,用head_commit.message替代(合并提交消息通常包含PR标题)。
- 触发事件为
语法与流程修正:
- 原配置中
pytest/mypy直接写在步骤下是语法错误,需放在run字段内用换行分隔。 - 新增依赖安装步骤,确保测试工具能正常运行。
- 原配置中
内容的提问来源于stack exchange,提问作者thenewjames
相关产品推荐
相关产品推荐

