詹金斯为触发分支上的分支构建?

时间:2019-03-07 01:48:40

标签: git jenkins

我有一个詹金斯(Jenkins)职位,该职位在分支更新时触发。

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

但是,我发现“构建步骤”是在Latest分支上执行的,而不是在推送到该分支上触发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上执行。

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

1 个答案:

答案 0 :(得分:1)

有不止一种解决方案。这取决于您从何处触发作业以及如何配置作业。

例如:

如果这很简单,则可以将参数设置为其配置,并通过钩子将其传递(您可能需要parameterized builds for Jenkins plugin):

为您的工作添加参数:

enter image description here

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

enter image description here

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

传递值

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

如果您通过VCS触发作业:您还可以传递此参数,它取决于您使用的VCS Server以及它必须具备的能力。例如,对于Bitbucket Server,它可以是:

因此,您需要找到适合您的VCS服务器的东西。

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