看起来 GitHubPullRequestBuilder 与 Jenkins v2.0 管道作业不兼容。
如何配置从 GitHub 拉取请求事件触发的管道作业?
关于这个主题的文档很少,我找不到任何这方面的例子。或者在 GitHub 中创建一个 Web Hook 来触发 PR 事件的管道作业是否更好?
最佳答案
我也有类似的问题。这对我有用
先决条件
- Jenkins 版本。 2+(我使用的是 Jenkins 2.60)
- Github(或 Github 企业)账户
- 您的 github 和 Jenkins 必须能够对话 彼此。
在 Github 上
- 创建具有相关权限的 github 个人访问 token (PAT)。
- 对于您的存储库,创建一个 Webhook
- URL 为
YourJenkinsURL/github-webhook/
- 选择“让我选择单个事件”并选中“拉取请求”
- URL 为
- 将 Jenkinsfile 添加到存储库的根文件夹中。出于测试目的,您可以将内容作为基本的 hello world,如下所示
pipeline { agent any stages { stage('Test') { steps { echo 'Hello World ...' } } } }
关于 Jenkins
- 安装GitHub Pull Request Builder插件。 (您还需要“Github”插件,但通常应作为 Jenkins 版本 2+ 的一部分安装)
- Jenkins – 凭证
- 添加 github 个人访问 token (PAT) 作为“密文”凭据。
- 添加 github 用户名-密码作为“用户名-密码”凭证。
- 管理 Jenkins – 配置系统
- Github – Github 服务器:这是 Github 插件的一部分。添加 github 服务器。 ‘API URL’ 默认为https://api.github.com 。如果您使用的是企业 github,请替换为企业 github url,后跟/api/v3。对于凭据,请选择 PAT 选项。测试连接。选中“管理 Hook ”。
- GitHub Pull Request Builder:对于“GitHub 服务器 API URL”,使用与 Github 服务器部分中指定的相同的 URL。将“共享 secret ”留空。对于凭据,请使用“用户名-密码”凭据。测试凭据以确保其正常工作。在我的设置中,选中了“自动管理网络钩子(Hook)”。
- 管道作业
- 使用“管道”选项创建一个新项目。注意:这是普通的管道作业,而不是多分支管道。
- 常规部分:检查“Github 项目”- 项目 URL:输入您的 github 存储库 URL
- 构建触发器:检查“GitHub Pull Request Builder”
- 对于“GitHub API 凭证”,选择您在“管理 Jenkins – 配置系统”屏幕中为 GitHub 拉取请求构建器设置的选项
- 对于管理员列表:添加您的用户名
- 选中使用 github Hook 进行构建触发
- 管道:
- 选择“来自 SCM 的管道脚本”。请注意,这假设您的存储库的根文件夹将包含“Jenkinsfile”
- SCM:选择“Git”
- 存储库 - 输入存储库详细信息。对于凭据,请使用基于“用户名-密码”的凭据。
- 点击“高级”并将引用规范添加为
+refs/pull/*:refs/remotes/origin/pr/*
- 分支 – 应为
${sha1}
- 脚本路径:默认为Jenkinsfile,保持原样。
- 轻量级结帐 - 取消选中此选项 ( https://github.com/jenkinsci/ghprb-plugin/issues/507 )
就是这样。你已经准备好了。在您的存储库的 master 分支上创建 PR 现在应该会触发您的 Jenkins Pipeline 作业
一些观察
- 从 github 重新交付 PR 的 Webhook 负载不会触发管道,但在 github 上打开新的 PR,甚至重新打开已关闭的 PR,会触发管道作业
- 在管道作业配置中,如果您选择“管道脚本”并将管道脚本粘贴到其中,则作业不会触发!!!
关于github - 如何从 GitHub 拉取请求触发 Jenkins 2.0 Pipeline 作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36850485/