让Jenkins使用可变SVN URL构建多个配置

让Jenkins使用可变SVN URL构建多个配置,jenkins,multi-configuration,Jenkins,Multi Configuration,我想自动化我们的构建过程 我们有30多种配置,每种配置都有不同的SVN分支。理想情况下,我希望避免由于维护工作和人为错误的风险而不得不创建30个单独的Jenkins工作 这就是Jenkins中设计的“多配置项目”,但不幸的是Jenkins不支持在SVN URL中使用配置矩阵轴 我也不能使用参数化构建进行构建,因为Jenkins不允许在本地签出路径中使用变量(URL中的变量可以正常工作,但它们总是到达名为${BRANCH}(literal)的目录 在一天结束时,我希望能够签出https://dom

我想自动化我们的构建过程

我们有30多种配置,每种配置都有不同的SVN分支。理想情况下,我希望避免由于维护工作和人为错误的风险而不得不创建30个单独的Jenkins工作

这就是Jenkins中设计的“多配置项目”,但不幸的是Jenkins不支持在SVN URL中使用配置矩阵轴

我也不能使用参数化构建进行构建,因为Jenkins不允许在本地签出路径中使用变量(URL中的变量可以正常工作,但它们总是到达名为
${BRANCH}
(literal)的目录

在一天结束时,我希望能够签出
https://domain.ext/something/${BRANCH}/
并将其保存到
/some/path/${BRANCH}
。如果这样做能让我充分利用Jenkin的内置SCM功能(例如轮询),那就更好了


我如何才能让Jenkins了解我想要实现的目标?

有两种方法可以按照我所看到的你想要的内容来做。你可以在一个项目中添加所有分支(通过配置中的“添加位置”),将它们签出到不同的目录,并“手动”找出更改的内容(或构建所有内容)。这可以与多配置集成,配置轴是不同的签出位置,即每个配置通过参数获得不同的工作目录


另一种方法不是告诉Jenkins关于存储库的情况,而是手动触发构建(例如通过SVN提交挂钩)作为第一个构建步骤,请查看源代码。同样,这可以作为一个多配置项目按照上面所述的类似路线来完成。

我最终解决了这个问题,让Jenkins在如此高的级别上查看SVN存储库,它包含了我所需的所有分支。但这不是一个理想的解决方案,因为在构建过程中会浪费时间g构建用于在所有内容上运行“svn更新”。

在规模较小的情况下也存在类似的问题:必须构建具有相同配置但不同svn路径的主干和分支

第一次尝试是在签出URL中使用$SVN_分支,并使用字符串参数进行设置。手动使用效果很好,但矩阵作业不起作用(正如Aleksi已经指出的那样)。使用矩阵构建所能做的就是触发参数化作业,作为后续作业,这看起来有点难看

现在我使用了“Jobcopy Builder插件”:我取消激活了我的初始作业并将其用作模板。在复制作业中,我有一个“复制作业”生成步骤,该步骤复制已停用的作业,用实际的分支名称(主干或分支/some_分支)替换$SVN_分支,并激活这两个作业。因为我还检查了“覆盖”选项,则在运行“复制作业”后更新所有作业配置,并保留生成历史记录