Jenkins和多个Git分支?

10

我正在处理一个 Jenkins 任务,需要它在同一个代码库中构建两个分支。如何实现这一点?

4个回答

5

您是在询问是否要在同一个检出的工作区目录中构建两个分支吗?

如果在同一个工作区目录中,您只需要创建一个脚本,该脚本将检出一个分支,构建它,完成后检出下一个分支,然后构建它。

这个单一的脚本将成为单一 Jenkins 作业调用的脚本。

例如,您的构建脚本可能如下所示:

git clone url:repo.git workspace
cd workspace 
git checkout branchA
make
# now you're done building branchA
# next checkout branchB and run make
git checkout branchB
make
# now you are done building branchB

每次结账都会安装所需分支的文件。这将按照要求进行构建。但是,由于它们将共享同一工作区目录,这可能意味着第一个构建将产生新文件,并在第二个构建运行时存在。我假设这是您想要的效果,因为您希望在同一工作区目录中构建两个分支。
更新:如果您希望下一次构建时拥有全新的工作区,请使用 git clean -xdf。

5

考虑到Jenkins无法在两个版本的代码库上执行一个任务(这是获取两个不同分支内容的情况),我建议使用Jenkins Git插件创建两个不同的任务,每个任务对应一个分支。


有没有一种方法可以在一个作业中构建两个分支? - Marx
@Marx:目前插件的实现方式不行,因为它需要首先检出一个特定版本。话虽如此,你可以在第三个作业中引用这两个作业(即包装器),就像Join插件(https://wiki.jenkins-ci.org/display/JENKINS/Join+Plugin)所示。 - VonC
Jenkins不支持多个材料/源控制吗?在Teamcity中,我会添加两个源,每个分支一个。 - manojlds
@manojlds:这应该是可能的(https://issues.jenkins-ci.org/browse/JENKINS-4542或http://issues.hudson-ci.org/browse/HUDSON-5158),但我认为它还没有集成,特别是当这些多个来源是来自git存储库的两个分支时。 - VonC

3

0

如果你想要上述功能,且还想要高级特性,即当 Jenkins 构建任何新分支并且仅在构建成功时将其合并到主分支时(也就是说,您想要两个主分支和两个构建),您可能需要考虑只是 fork 该存储库,并在存储库之间合并更改(Git 就是为此而构建的,尽管我还没有完全使用到这种程度)。

因此,您基本上会有2个 Git 存储库和2个 Jenkins 构建,并且您可以配置 git 插件从每个存储库中的任何分支构建,并将其合并到该存储库的主分支中。 因此,在此配置中,每个存储库都充当一个分支。

当我们从任何情况下的 1.x 版本线开始启动新的版本线 2.x 时,这就是我们的计划。至少我们会看看它在实践中如何运作。

以后见, 迪恩


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