正确配置 Jenkins GitHub Pull Request Builder 下游
Proper configuration for Jenkins GitHub Pull Request Builder downstream
我正在尝试创建两个都利用 GitHub Pull Request Builder plugin 的 Jenkins 作业,以便 运行 进行多项状态检查,但我无法从我的下游作业获取状态检查到出现在我的 GitHub 项目中。
这是我要设置的 CI 流程摘要:
- 针对我的 git 存储库打开了一个拉取请求,它触发了 Jenkins
中的 运行 的 Upstream 作业
- Upstream 根据构建报告其状态,如果
SUCCESS
,应通过 [=] 调用 Downstream 作业135=]-构建动作
- 下游 运行s 并报告自己的状态检查
第 3 步是我遇到问题的地方。 下游 运行 正确,但它没有 post 状态。在我的 GitHub 项目设置的 Branches 部分甚至不可用状态。我不确定 GHPRB 如何初始创建状态检查,但在控制台输出中有对上下文消息的引用:
14:58:23 Started by upstream project "upstream" build number 209
14:58:23 originally caused by:
14:58:23 GitHub pull request #114 of commit f1ff2819a5308f7819275e732cf44a2cc2ec31dc, no merge conflicts.
14:58:23 [EnvInject] - Loading node environment variables.
14:58:23 Building on master in workspace /store/jenkins/jobs/downstream/workspace
14:58:23 > git rev-parse --is-inside-work-tree # timeout=10
14:58:23 Fetching changes from the remote Git repository
14:58:23 > git config remote.origin.url <removed for privacy> # timeout=10
14:58:23 Fetching upstream changes from <removed for privacy>
14:58:23 > git --version # timeout=10
14:58:23 > git -c core.askpass=true fetch --tags --progress <removed for privacy> +refs/pull/*:refs/remotes/origin/pr/*
14:58:24 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
14:58:24 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
14:58:24 Checking out Revision eac390c51a1b8b591bfe879421bd5fad0421a1ec (refs/remotes/origin/master)
14:58:24 > git config core.sparsecheckout # timeout=10
14:58:24 > git checkout -f eac390c51a1b8b591bfe879421bd5fad0421a1ec
14:58:24 First time build. Skipping changelog.
14:58:24 [build] $ /store/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1.8.2/bin/ant -DghprbStatusUrl= "-DghprbSUCCESSMessage=Packaging organization successfully cleaned" -DghprbStartedStatus=Undeploying -DghprbAddTestResults=false "-DghprbCommitStatusContext=Cleaning Packaging" "-DghprbERRORMessage=An error occurred during undeployment" -DghprbUpstreamStatus=true "-DghprbTriggeredStatus=Preparing destructive changes" "-DghprbFAILUREMessage=Packaging organization failed to clean properly" -DghprbShowMatrixStatus=false
以下是两个 Jenkins 作业的相关配置部分:
上游作业
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
${sha1}
构建触发器
- GitHub 拉取请求生成器
- 使用 git 集线器挂钩进行构建触发
✔︎
- 在下游构建中显示构建错误?
✔︎
- 触发器设置 填充了自定义上下文消息
Post-构建动作
- 构建其他项目:
Downstream
下游工作
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
*/master
构建触发器
- GitHub 拉取请求生成器
- 触发器设置 填充了自定义上下文消息
构建环境
- 使用自定义上下文和消息设置 Git集线器提交状态(必须使用 GHPRB 触发器配置上游作业)
✔︎
- 自定义上下文消息传递字段反映了 触发器设置 部分下列出的那些(我怀疑这两个都是必需的,但目前似乎都没有工作)
我错过了什么? 请注意,我没有安装 Jobs DSL 插件,所以我无法使用 the extension that GHPRB provides。
经过大量试验和错误后,this comment 阐明了我的问题。
我的问题的症结在于 下游 没有收到 GHPRB 提供的所需环境变量。即 ghprbGhRepository
、ghprbPullId
、ghprbActualCommit
和 sha1
.
两个作业的正确配置如下:
上游作业
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
${sha1}
构建触发器
- GitHub 拉取请求生成器
- 使用 github 钩子进行构建触发
✔︎
- 在下游构建中显示构建错误?
✔︎
- 触发器设置 填充了自定义上下文消息
建造
- Trigger/call builds on other projects
- 要建设的项目:
Downstream
- 预定义参数:
ghprbGhRepository=${ghprbGhRepository}
ghprbPullId=${ghprbPullId}
ghprbActualCommit=${ghprbActualCommit}
sha1=${sha1}
下游工作
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
${sha1}
构建环境
- 使用自定义上下文和消息设置 Git集线器提交状态(必须使用 GHPRB 触发器配置上游作业)
✔︎
我正在尝试创建两个都利用 GitHub Pull Request Builder plugin 的 Jenkins 作业,以便 运行 进行多项状态检查,但我无法从我的下游作业获取状态检查到出现在我的 GitHub 项目中。
这是我要设置的 CI 流程摘要:
- 针对我的 git 存储库打开了一个拉取请求,它触发了 Jenkins 中的 运行 的 Upstream 作业
- Upstream 根据构建报告其状态,如果
SUCCESS
,应通过 [=] 调用 Downstream 作业135=]-构建动作 - 下游 运行s 并报告自己的状态检查
第 3 步是我遇到问题的地方。 下游 运行 正确,但它没有 post 状态。在我的 GitHub 项目设置的 Branches 部分甚至不可用状态。我不确定 GHPRB 如何初始创建状态检查,但在控制台输出中有对上下文消息的引用:
14:58:23 Started by upstream project "upstream" build number 209
14:58:23 originally caused by:
14:58:23 GitHub pull request #114 of commit f1ff2819a5308f7819275e732cf44a2cc2ec31dc, no merge conflicts.
14:58:23 [EnvInject] - Loading node environment variables.
14:58:23 Building on master in workspace /store/jenkins/jobs/downstream/workspace
14:58:23 > git rev-parse --is-inside-work-tree # timeout=10
14:58:23 Fetching changes from the remote Git repository
14:58:23 > git config remote.origin.url <removed for privacy> # timeout=10
14:58:23 Fetching upstream changes from <removed for privacy>
14:58:23 > git --version # timeout=10
14:58:23 > git -c core.askpass=true fetch --tags --progress <removed for privacy> +refs/pull/*:refs/remotes/origin/pr/*
14:58:24 > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
14:58:24 > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
14:58:24 Checking out Revision eac390c51a1b8b591bfe879421bd5fad0421a1ec (refs/remotes/origin/master)
14:58:24 > git config core.sparsecheckout # timeout=10
14:58:24 > git checkout -f eac390c51a1b8b591bfe879421bd5fad0421a1ec
14:58:24 First time build. Skipping changelog.
14:58:24 [build] $ /store/jenkins/tools/hudson.tasks.Ant_AntInstallation/ant_1.8.2/bin/ant -DghprbStatusUrl= "-DghprbSUCCESSMessage=Packaging organization successfully cleaned" -DghprbStartedStatus=Undeploying -DghprbAddTestResults=false "-DghprbCommitStatusContext=Cleaning Packaging" "-DghprbERRORMessage=An error occurred during undeployment" -DghprbUpstreamStatus=true "-DghprbTriggeredStatus=Preparing destructive changes" "-DghprbFAILUREMessage=Packaging organization failed to clean properly" -DghprbShowMatrixStatus=false
以下是两个 Jenkins 作业的相关配置部分:
上游作业
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
${sha1}
构建触发器
- GitHub 拉取请求生成器
- 使用 git 集线器挂钩进行构建触发
✔︎
- 在下游构建中显示构建错误?
✔︎
- 触发器设置 填充了自定义上下文消息
- 使用 git 集线器挂钩进行构建触发
Post-构建动作
- 构建其他项目:
Downstream
下游工作
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
*/master
构建触发器
- GitHub 拉取请求生成器
- 触发器设置 填充了自定义上下文消息
构建环境
- 使用自定义上下文和消息设置 Git集线器提交状态(必须使用 GHPRB 触发器配置上游作业)
✔︎
- 自定义上下文消息传递字段反映了 触发器设置 部分下列出的那些(我怀疑这两个都是必需的,但目前似乎都没有工作)
我错过了什么? 请注意,我没有安装 Jobs DSL 插件,所以我无法使用 the extension that GHPRB provides。
经过大量试验和错误后,this comment 阐明了我的问题。
我的问题的症结在于 下游 没有收到 GHPRB 提供的所需环境变量。即 ghprbGhRepository
、ghprbPullId
、ghprbActualCommit
和 sha1
.
两个作业的正确配置如下:
上游作业
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
${sha1}
构建触发器
- GitHub 拉取请求生成器
- 使用 github 钩子进行构建触发
✔︎
- 在下游构建中显示构建错误?
✔︎
- 触发器设置 填充了自定义上下文消息
- 使用 github 钩子进行构建触发
建造
- Trigger/call builds on other projects
- 要建设的项目:
Downstream
- 预定义参数:
ghprbGhRepository=${ghprbGhRepository}
ghprbPullId=${ghprbPullId}
ghprbActualCommit=${ghprbActualCommit}
sha1=${sha1}
- 要建设的项目:
下游工作
源代码管理:Git
- 姓名:
origin
- 参考规范:
+refs/pull/*:refs/remotes/origin/pr/*
- 分支说明符:
${sha1}
构建环境
- 使用自定义上下文和消息设置 Git集线器提交状态(必须使用 GHPRB 触发器配置上游作业)
✔︎