【发布时间】:2011-11-09 10:37:19
【问题描述】:
我正在从事 Jenkins 的工作,我需要它在同一个存储库中构建两个分支。我该怎么做?
【问题讨论】:
我正在从事 Jenkins 的工作,我需要它在同一个存储库中构建两个分支。我该怎么做?
【问题讨论】:
考虑到 Jenkins 无法在 两个 版本的存储库上执行一项作业(这将获取两个不同分支的内容),我建议制作两个不同的作业,每个分支一个(使用Jenkins Git plugin)。
【讨论】:
您是在问是否要在同一个签出的工作区目录中构建两个分支?
如果在同一个工作区目录中,您只需创建一个脚本,该脚本将检出一个分支并构建它,完成后检出下一个分支然后构建它。
然后这个单一的脚本将被单一的 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。
【讨论】:
如果您想要上述功能并且想要 Jenkins 构建任何新分支并仅在构建成功时将其合并到 master 的高级功能(即您想要两个主分支和两个构建),您可能想要考虑只分叉存储库和合并存储库之间的更改(git 是为这种事情而构建的,尽管我还没有完全达到那个使用点)。
因此,您基本上将拥有 2 个 git 存储库和两个 jenkins 构建,您可以将 git 插件配置为从每个存储库中的任何分支构建并合并到该存储库的 master 中。因此,每个存储库在此配置中就像一个分支。
当我们从 1.x 发布线开始新的 2.x 发布线时,我们的计划就是分叉。我们将在实践中看到它是如何工作的。
后来, 院长
【讨论】:
此插件将为您构建每个分支: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) 插件,它们可以在提交代码时触发构建,然后将构建提交到的分支。
【讨论】: