问题 正确配置Jenkins GitHub Pull Request Builder下游


我正在尝试创建两个同时利用它的Jenkins工作 GitHub Pull Request Builder插件 为了运行多个状态检查,但是我无法从我的下游作业中获取状态检查以显示在我的GitHub项目中。

以下是我想要设置的总结CI流程:

  1. 针对我的git存储库打开了一个pull请求,该请求会触发 上游 在詹金斯工作的工作
  2. 上游 根据构建和if报告其状态 SUCCESS,应该调用 下游 通过构建后的行动来完成工作
  3. 下游 运行并报告自己的状态检查

第3步是我遇到问题的地方。 下游 运行正常,但它不会发布状态。该状态甚至无法在 分行 我的GitHub项目的设置部分。我不知道怎么做 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
  • 的Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • 分支说明: ${sha1}

构建触发器

  • GitHub Pull Request Builder
    • 使用github挂钩进行构建触发
    • 显示下游版本的构建错误?
    • 触发设置 填充自定义上下文消息

构建后操作

  • 建立其他项目: Downstream

下游工作

源代码管理:Git

  • 名称: origin
  • 的Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • 分支说明: */master

构建触发器

  • GitHub Pull Request Builder
    • 触发设置 填充自定义上下文消息

建立环境

  • 使用自定义上下文和消息设置GitHub提交状态(必须使用GHPRB触发器配置上游作业)
    • 自定义上下文消息传递字段反映了在 触发设置 部分(我怀疑这些都是必需的,但目前似乎都没有工作)

我错过了什么? 应该指出 我没有安装Jobs DSL插件所以我无法利用 GHPRB提供的扩展


7396
2017-08-03 14:23


起源



答案:


经过广泛的试验和错误, 这个评论 对我的问题有所了解。

我的问题的症结在于 下游 没有收到所需的环境变量 GHPRB 提供。亦即 ghprbGhRepositoryghprbPullIdghprbActualCommit 和 sha1

两个作业的正确配置如下:


上游工作

源代码管理:Git

  • 名称: origin
  • 的Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • 分支说明: ${sha1}

构建触发器

  • GitHub Pull Request Builder
    • 使用github挂钩进行构建触发
    • 显示下游版本的构建错误?
    • 触发设置 填充自定义上下文消息

建立

  • 触发/调用建立在其他项目上
    • 建设项目: Downstream
    • 预定义参数:
      • ghprbGhRepository=${ghprbGhRepository}
      • ghprbPullId=${ghprbPullId}
      • ghprbActualCommit=${ghprbActualCommit}
      • sha1=${sha1}

下游工作

源代码管理:Git

  • 名称: origin
  • 的Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • 分支说明: ${sha1}

建立环境

  • 使用自定义上下文和消息设置GitHub提交状态(必须使用GHPRB触发器配置上游作业)

12
2017-08-03 17:42



如果我们想在上游PR repo上添加git状态检查,下游作业使用不同的git repo和不同的分支怎么办? - BeginnersSake


答案:


经过广泛的试验和错误, 这个评论 对我的问题有所了解。

我的问题的症结在于 下游 没有收到所需的环境变量 GHPRB 提供。亦即 ghprbGhRepositoryghprbPullIdghprbActualCommit 和 sha1

两个作业的正确配置如下:


上游工作

源代码管理:Git

  • 名称: origin
  • 的Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • 分支说明: ${sha1}

构建触发器

  • GitHub Pull Request Builder
    • 使用github挂钩进行构建触发
    • 显示下游版本的构建错误?
    • 触发设置 填充自定义上下文消息

建立

  • 触发/调用建立在其他项目上
    • 建设项目: Downstream
    • 预定义参数:
      • ghprbGhRepository=${ghprbGhRepository}
      • ghprbPullId=${ghprbPullId}
      • ghprbActualCommit=${ghprbActualCommit}
      • sha1=${sha1}

下游工作

源代码管理:Git

  • 名称: origin
  • 的Refspec: +refs/pull/*:refs/remotes/origin/pr/*
  • 分支说明: ${sha1}

建立环境

  • 使用自定义上下文和消息设置GitHub提交状态(必须使用GHPRB触发器配置上游作业)

12
2017-08-03 17:42



如果我们想在上游PR repo上添加git状态检查,下游作业使用不同的git repo和不同的分支怎么办? - BeginnersSake