Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins GitHub拉取请求生成器下游的正确配置_Git_Github_Jenkins_Ghprb - Fatal编程技术网

Jenkins GitHub拉取请求生成器下游的正确配置

Jenkins GitHub拉取请求生成器下游的正确配置,git,github,jenkins,ghprb,Git,Github,Jenkins,Ghprb,我正在尝试创建两个Jenkins作业,它们都利用来运行多个状态检查,但是我很难从下游作业中获取状态检查,以显示在我的GitHub项目中 下面是我要设置的汇总CI流: 对我的git存储库打开一个pull请求,它触发上游作业在Jenkins中运行 上游根据生成报告其状态,如果成功,则应通过生成后操作调用下游作业 下游运行并报告自己的状态检查 第三步是我遇到问题的地方下游运行正常,但不会发布状态。在我的GitHub项目设置的分支部分下,该状态甚至不可用。我不确定状态的初始创建是如何检查的,但控制台输出

我正在尝试创建两个Jenkins作业,它们都利用来运行多个状态检查,但是我很难从下游作业中获取状态检查,以显示在我的GitHub项目中

下面是我要设置的汇总CI流:

  • 对我的git存储库打开一个pull请求,它触发上游作业在Jenkins中运行
  • 上游根据生成报告其状态,如果
    成功
    ,则应通过生成后操作调用下游作业
  • 下游运行并报告自己的状态检查
  • 第三步是我遇到问题的地方下游运行正常,但不会发布状态。在我的GitHub项目设置的分支部分下,该状态甚至不可用。我不确定状态的初始创建是如何检查的,但控制台输出中有对上下文消息传递的引用:

    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
    
    14:58:23由上游项目“上游”建造编号209启动
    14:58:23最初由以下原因引起:
    14:58:23提交f1ff2819a5308f7819275e732cf44a2cc2ec31dc的GitHub拉取请求#114,无合并冲突。
    14:58:23[EnvInject]-加载节点环境变量。
    14:58:23在工作区/商店/詹金斯/作业/下游/工作区的主控台上构建
    14:58:23>git rev parse——在工作树中#timeout=10
    14:58:23从远程Git存储库获取更改
    14:58:23>git config remote.origin.url#timeout=10
    14:58:23从中获取上游更改
    14:58:23>git--version#timeout=10
    14:58:23>git-c core.askpass=true fetch--tags--progress+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检查版本eac390c51a1b8b591bfe879421bd5fad0421a1ec(参考/遥控/原点/主控)
    14:58:24>git config core.sparsecheckout#timeout=10
    14:58:24>git签出-f eac390c51a1b8b591bfe879421bd5fad0421a1ec
    14:58:24第一次建造。正在跳过更改日志。
    14:58:24[build]$/store/jenkins/tools/hudson.tasks.Ant_AntInstallation/Ant_1.8.2/bin/Ant-DghprbStatusUrl=“-DghprbSUCCESSMessage=包装组织已成功清理”-DghprbStartedStatus=取消部署-DghprbAddTestResults=false”-DghprbCommitStatusContext=清理包装“”-DghprbERRORMessage=取消部署期间发生错误”-DghprbUpstreamStatus=true“-DghprbTriggeredStatus=准备破坏性更改”“-DghprbFAILUREMessage=包装组织未能正确清理”-DghprbShowMatrixStatus=false
    
    以下是两个Jenkins作业的相关配置部分:


    上游工作 源代码管理:Git
    • 名称:
      origin
    • Refspec:
      +refs/pull/*:refs/remotes/origin/pr/*
    • 分支说明符:
      ${sha1}
    构建触发器
    • GitHub拉请求生成器
      • 使用github钩子进行构建触发
        ✔︎
      • 是否在下游生成上显示生成错误<代码>✔︎
      • 触发器设置由自定义上下文消息填充
    构建后操作
    • 构建其他项目:
      下游

    下游作业 源代码管理:Git
    • 名称:
      origin
    • Refspec:
      +refs/pull/*:refs/remotes/origin/pr/*
    • 分支说明符:
      */master
    构建触发器
    • GitHub拉请求生成器
      • 触发器设置由自定义上下文消息填充
    建筑环境
    • 使用自定义上下文和消息设置GitHub提交状态(必须使用GHPRB触发器配置上游作业)
      ✔︎
      
      • 自定义上下文消息字段与触发器设置部分下列出的字段相镜像(我怀疑这两个字段都是必需的,但它们目前似乎都不起作用)


    我错过了什么需要注意的是我没有安装Jobs DSL插件,因此无法利用。

    经过大量的尝试和错误,我的问题得到了一些解决

    我的问题的关键是下游没有接收到提供所需的环境变量。即
    ghprbghrespository
    ghprbPullId
    ghprbActualCommit
    sha1
    。 两个作业的正确配置如下所示:


    上游工作 源代码管理:Git
    • 名称:
      origin
    • Refspec:
      +refs/pull/*:refs/remotes/origin/pr/*
    • 分支说明符:
      ${sha1}
    构建触发器
    • GitHub拉请求生成器
      • 使用github钩子进行构建触发
        ✔︎
      • 是否在下游生成上显示生成错误<代码>✔︎
      • 触发器设置由自定义上下文消息填充
    建造
      • 建设项目:
        下游
      • 预定义参数:
        • ghprbghrespository=${ghprbghrespository}
        • ghprbPullId=${ghprbPullId}
        • ghprbActualCommit=${ghprbActualCommit}
        • sha1=${sha1}

    下游作业 源代码管理:Git
    • 名称:
      origin
    • Refspec:
      +refs/pull/*:refs/remotes/origin/pr/*
    • 分支说明符:
      ${sha1}
    建筑环境
    • 使用自定义上下文和消息设置GitHub提交状态(必须使用GHPRB触发器配置上游作业)
      ✔︎

    如果我们想在上游PR回购和下游作业上添加git状态检查,而下游作业使用不同的git回购和不同的