我正在处理一个 Jenkins 任务,需要它在同一个代码库中构建两个分支。如何实现这一点?
您是在询问是否要在同一个检出的工作区目录中构建两个分支吗?
如果在同一个工作区目录中,您只需要创建一个脚本,该脚本将检出一个分支,构建它,完成后检出下一个分支,然后构建它。
这个单一的脚本将成为单一 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
考虑到Jenkins无法在两个版本的代码库上执行一个任务(这是获取两个不同分支内容的情况),我建议使用Jenkins Git插件创建两个不同的任务,每个任务对应一个分支。
这个插件可以为您构建每个分支:https://wiki.jenkins-ci.org/display/JENKINS/Multi-Branch+Project+Plugin。
您还可以使用GitLab (https://wiki.jenkins-ci.org/display/JENKINS/GitLab+Plugin) / GitHub (https://wiki.jenkins-ci.org/display/JENKINS/GitHub+Plugin)插件,在代码提交时触发构建,并构建被提交的分支。
如果你想要上述功能,且还想要高级特性,即当 Jenkins 构建任何新分支并且仅在构建成功时将其合并到主分支时(也就是说,您想要两个主分支和两个构建),您可能需要考虑只是 fork 该存储库,并在存储库之间合并更改(Git 就是为此而构建的,尽管我还没有完全使用到这种程度)。
因此,您基本上会有2个 Git 存储库和2个 Jenkins 构建,并且您可以配置 git 插件从每个存储库中的任何分支构建,并将其合并到该存储库的主分支中。 因此,在此配置中,每个存储库都充当一个分支。
当我们从任何情况下的 1.x 版本线开始启动新的版本线 2.x 时,这就是我们的计划。至少我们会看看它在实践中如何运作。
以后见, 迪恩