【问题标题】:Jenkins build for the branch on the triggered branch?Jenkins 为触发分支上的分支构建?
【发布时间】:2019-07-28 19:28:17
【问题描述】:

我有一个在更新分支时触发的 Jenkins 作业。

分支说明符设置为 Any: Branch Specifier (blank for 'any')

但是,我发现构建步骤是在最新分支上执行的,而不是在推送到它的分支上触发 Jenkins 作业。

构建输出显示:

+refs/pull/${ghprbPullId}/*:refs/remotes/origin/pr/${ghprbPullId}/* 
Seen branch in repository origin/1 
Seen branch in repository origin/2 
Seen branch in repository origin/3 
Seen branch in repository origin/4 
Seen branch in repository origin/5
Seen branch in repository origin/master 
Seen branch in repository origin/6 
Seen branch in repository origin/7
Seen branch in repository origin/8 
Seen branch in repository origin/9
Seen 10 remote branches

推送到分支 origin/7 触发了 Jenkins 作业,但是构建步骤在分支 origin/1 上执行。

如何确保构建步骤在触发作业的同一分支上执行? (就我而言,origin/7

【问题讨论】:

    标签: git jenkins


    【解决方案1】:

    解决方案不止一种。这取决于您触发作业的位置以及作业的配置方式。

    举例:

    如果是简单的工作,你可以设置参数到它的配置并通过你的钩子传递它(你可能需要parameterized builds for Jenkins plugin):

    为您的工作添加参数:

    然后将参数的值设置为要构建的分支(通过$ParameterName):

    如果触发器是自定义的,例如从您的应用程序 - 您应该通过调用 http://yourJenkinsServer/job/myJobName/buildWithParameters?token=TOKEN&PARAMETER=Value 来传递值

    您可以在插件文档中找到更多详细信息。 Token 这是您帐户的 Jenkins 安全令牌。

    如果你通过 VCS 触发作业:你也可以传递这个参数,这取决于你使用的 VCS 服务器以及它必须执行的能力。例如,对于 Bitbucket Server,它可以是:

    所以你需要找到适合你的 VCS 服务器的。

    作为附加示例:对于多分支管道项目,您可以简单地使用环境变量 BRANCH_NAME 并在管道代码中使用 git branch: "${BRANCH_NAME}"。而且它更易于设置和使用。

    【讨论】:

      猜你喜欢
      • 2020-08-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-30
      • 2017-07-12
      • 2020-01-09
      • 2018-03-15
      • 1970-01-01
      相关资源
      最近更新 更多