如何使用Jenkins Git插件构建包括或不包括原始分支

10

在主分支上使用Git构建时,Jenkins会获取并使用"origin/master"。当在一个分支上进行Git构建时,Jenkins会获取并使用"mybranch"而非"origin/mybranch",并且无法检测到更改。

我将分支指定器切换为使用origin/mybranch,看起来它可以工作。这是处理事情的标准方式,还是我错过了更明显的方法?我不想增加不必要的复杂性。

请告诉我Jenkins是否应该将其Branches-To-Build字段设置为origin/branchname,而不是branchname。

谢谢

Peter

2个回答

3
如果你只有一个远程仓库(名为origin),那么输入 branchname 应该等同于输入 origin/branchname。如果你有多个仓库,而你只输入了 branchname,那么它应该会检查所有远程仓库中是否存在该分支。
请注意,如果你在 Jenkins 工作区仓库中手动创建了一个名为 branchname 的分支,则它可能会表现出略微奇怪的行为,你可能需要删除该分支或重新创建工作区。一般来说,你不应该手动操作工作区仓库中的分支。
它永远不应该尝试使用本地(非远程)分支进行轮询或获取更改。如果你看到它这样做,那么肯定是一个 bug。你应该尝试升级你的 Jenkins 实例和 Git 插件到最新版本,如果你仍然遇到问题,你应该提交问题(同时你可以使用 origin/branchname 作为一种解决方法)。然而,对于我来说,只输入 branchname 在最新版本中可以正常工作,所以如果你继续看到这个问题,我建议你重新创建工作区,以尝试获得一个干净的仓库。

1
我希望我们的构建可以获取所有的remotes/origin/**分支,但是不包括remotes/origin/GEcode和remotes/origin/puecode,因为它们与主分支相差太远,但是在这些分支上的更改会导致jenkins将它们捡起来... 我该如何忽略它们? - Dean Hiller

2

检查您当前的.git/config文件,您会发现您的“origin”和主分支与“origin”的关系已经指定。没有其他分支将被指定,因此插件无法构建URL。要添加更多的分支...

[remote "origin"]
        url = ssh://myserv/srv/git/proj.git
        fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
        remote = origin
        merge = refs/heads/master
[branch "im_a_branch"]
        remote = origin
        merge = refs/heads/im_a_branch_remote_branch_name

这将使您只需在Jenkins的“要构建的分支”字段中输入分支名称。那可能有些过度和额外的维护工作。只需输入origin/branchname即可。

3
Jenkins 创建代码仓库的初始克隆,但这并没有解决问题。 - djs
没错。对于Jenkins来说并不是非常有用,但总的来说还是很好知道的。我可以修改主代码库,或许我的用户也会更加满意。 - Petra Kahn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接