我有一个詹金斯(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
)
答案 0 :(得分:1)
有不止一种解决方案。这取决于您从何处触发作业以及如何配置作业。
例如:
如果这很简单,则可以将参数设置为其配置,并通过钩子将其传递(您可能需要parameterized builds for Jenkins plugin):
为您的工作添加参数:
然后将参数的值设置为要构建的分支(通过$ParameterName
):
如果触发器是自定义的,例如,从您的应用程序中-您应该通过调用http://yourJenkinsServer/job/myJobName/buildWithParameters?token=TOKEN&PARAMETER=Value
您可以在插件文档中找到更多详细信息。 Token
是您帐户的Jenkins安全令牌。
如果您通过VCS触发作业:您还可以传递此参数,它取决于您使用的VCS Server以及它必须具备的能力。例如,对于Bitbucket Server,它可以是:
因此,您需要找到适合您的VCS服务器的东西。
作为另一个示例:对于多分支管道项目,您可以简单地使用环境变量BRANCH_NAME
并在管道代码中使用git branch: "${BRANCH_NAME}"
。而且更容易设置和使用。