如何基于Jenkins构建成功状态触发Pull Request的GitHub Actions工作流?
解决方案
一、配置Jenkins仅通过PR Webhook触发
- 在GitHub仓库的「Settings → Webhooks」页面,添加Jenkins的Webhook地址(格式通常为
http://你的Jenkins域名/github-webhook/)。 - 触发事件选择「Let me select individual events」,仅勾选「Pull requests」,确保只有PR的创建、更新、重开等事件会推送Webhook到Jenkins。
- 在Jenkins对应任务的配置页面,勾选「GitHub hook trigger for GITScm polling」,让Jenkins能够接收并响应GitHub的PR Webhook事件。
二、配置Jenkins向GitHub提交状态检查
- 确保Jenkins已安装「GitHub Status」插件。
- 在Jenkins任务的「构建后操作」中添加「Set GitHub commit status (universal)」:
- 配置GitHub账号凭据(需拥有仓库的状态检查权限);
- 设置「Context」为唯一标识(比如
jenkins/pr-build,后续Actions会通过这个上下文识别Jenkins的检查结果); - 构建成功时,将「Status」设为「Success」;构建失败则设为「Failure」。
- 保存配置后,后续PR触发的Jenkins构建完成后,会自动向GitHub的PR提交对应的状态检查结果。
三、配置GitHub Actions仅在Jenkins状态检查通过后触发
在仓库的 .github/workflows/ 目录下创建工作流文件(比如 post-jenkins-build.yml),内容如下:
name: Run After Jenkins PR Build on: # 监听PR的创建、更新、重开事件 pull_request: types: [opened, synchronize, reopened] jobs: execute-workflow: runs-on: ubuntu-latest # 仅当Jenkins的状态检查(上下文为jenkins/pr-build)成功时执行 if: >- ${{ contains( github.event.pull_request.status_checks.*.context, 'jenkins/pr-build' ) && (github.event.pull_request.status_checks | select(.context == 'jenkins/pr-build') | first).conclusion == 'success' }} steps: - name: Checkout Code uses: actions/checkout@v4 # 在这里添加你的具体工作流步骤 - name: Example Step run: echo "Jenkins build passed, executing GitHub Actions..."
或者,也可以通过监听Jenkins的检查套件完成事件来触发,这种方式更精准:
name: Run After Jenkins PR Build on: check_suite: types: [completed] jobs: execute-workflow: runs-on: ubuntu-latest if: >- ${{ github.event.check_suite.app.name == 'Jenkins' && github.event.check_suite.conclusion == 'success' && github.event.check_suite.pull_requests != [] }} steps: - name: Checkout Code uses: actions/checkout@v4 # 你的工作流步骤 - name: Example Step run: echo "Jenkins PR build passed, starting Actions..."
验证流程
- 创建或更新PR,确认Jenkins被Webhook触发并开始构建;
- Jenkins构建成功后,查看PR的「Checks」标签页,确认Jenkins的状态检查显示为绿色;
- 检查GitHub Actions是否自动触发并执行。
内容的提问来源于stack exchange,提问作者new_bie
相关产品推荐
相关产品推荐

