3

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

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

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

我也无法使用参数化构建进行构建,因为 Jenkins 不允许在本地结帐路径中使用变量(URL 中的变量可以正常工作,但它们最终总是会转到一个名为${BRANCH}(literal) 的目录。

归根结底,我希望能够签出https://domain.ext/something/${BRANCH}/并将其保存到/some/path/${BRANCH}. 如果这样做的方式能让我能够利用 Jenkins 的内置 SCM 功能(例如轮询),那就更好了。

我怎样才能让詹金斯了解我想要实现的目标?

4

3 回答 3

1

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

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

于 2012-04-12T09:50:09.447 回答
0

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

于 2012-08-03T13:25:52.443 回答
0

规模较小时有一个类似的问题:必须构建具有相同配置但不同 SVN 路径的主干和分支。

第一次尝试是在结帐 URL 中使用 $SVN_BRANCH 并使用字符串参数进行设置。在手动使用时效果很好,但不适用于矩阵作业(正如 Aleksi 已经指出的那样)。我对矩阵构建所能做的就是触发参数化工作作为后续工作,这在某种程度上看起来很丑陋。

现在我最终使用了“Jobcopy Builder 插件”:我停用了我的初始工作并将其用作模板。在复制作业中,我有一个“复制作业”构建步骤,它复制停用的作业,将 $SVN_BRANCH 替换为实际的分支名称(主干或分支/some_branch)并激活这两个作业。由于我还选中了“覆盖”选项,因此在运行“复制作业”后会更新所有作业配置并保留构建历史记录。

于 2015-11-20T08:04:59.720 回答