1

我正在努力将内部编写的基于 Java 的构建工具迁移到 Jenkins。内部构建工具有 1000 多个针对各种产品及其各自版本的作业,每个作业有 10 多个步骤,每个步骤都有一些代码行要执行。这个内部构建工具是用 Java 编写的。

内部构建工具除了读取以下文件并创建动态 jsp 视图并从 db 加载构建历史并显示它之外什么都不做。

  1. Step.prop - 包含所有步骤和相应的命令,例如

pdplanner : clean : YES : YES : runant -Dproperties_file=build/dallas78.build.properties -f buildjars.xml clean_all

pdplanner:版本:是:否:runant -Dproperties_file=build/dallas78.build.properties 版本

  1. 每个作业的 Clearcase 配置规范文件 .cs

如果我们开始在 jenkins 中为所有 1000 个工作设置每个工作,则需要一年多的时间才能为所有人成功构建。我正在考虑做一些自动化,而动态 Jenkins config.xml 可以通过读取每个项目的所有这些属性 n 规范文件来创建。

产品管理团队的另一个规范是 - 我们应该在 jenkins 作业中将每个步骤作为一个复选框,因此如果有人确实想要执行某些步骤,他们可以相应地取消选中它。

我很困惑用不同的选项来完成这项任务,但还没有得出结论……我确实考虑过可能不适合我的模板插件。您能否分享您对这个问题的看法/建议并分享您的想法?

4

2 回答 2

3

管理层需要偶尔低头看看地球。苹果不是橙子。如果你有一个苹果,想要一个橘子,你不能把苹果涂成橘色并称它为橘子。

Jenkins 与您内部的 java 构建系统不同。如果你要搬到 Jenkins,那是因为你想要 Jenkins,而不是别的东西。不要期望(或者更确切地说,管理层不应该期望)它与以前的系统完全一样,否则:你为什么首先开始改变?

自动创建 config.xml。
如果您可以编写脚本来自动在文件系统上创建 config.xml,那么就去做吧。在您从全局配置中选择“从磁盘重新加载”或重新启动 Jenkins 之前,这些配置不会加载到 Jenkins。

有许多插件可以动态构建作业,从简单的Jobcopy Builder简单地替换一些标记文本,到更复杂的Job DSL,它提供了自己的作业描述语言。

每个步骤的复选框
阅读我关于将苹果涂成橙色的评论。詹金斯没有这个。最好的办法是为每个步骤创建复选框参数,然后将每个步骤包装到Conditional Buildstep插件中,该插件将检查变量的值,并仅在选中时执行该步骤。

您可能还需要灵活的发布插件来为后期构建步骤提供相同的功能。

于 2014-11-18T14:34:37.823 回答
1

我不确定您是否仍在寻找这种在每一步都有复选框的解决方案,但我有类似的情况,我只是想分享我采用的方法。

首先,Jenkins 似乎是一个很棒的工具,它提供的远程执行功能为我们提供了许多选择。从那里开始,我认为我们应该处理编程逻辑中的其余部分。

因此,对于我们的情况,我希望最终用户选择每次运行要执行作业的哪个部分(步骤),我添加了一个构建参数 - 文本类型,但我做了描述以指导用户输入捕获我们想要的输入的二进制数字(如 11111 - 执行所有步骤,10000 - 仅执行第一步等......我们可以添加一些检查以确保其二进制)。然后,我在 Jenkins 的(主)步骤运行的脚本中使用了这个构建参数来决定运行哪些子步骤(可以说这不是 Jenkins 步骤)。祝你好运。干杯。

虽然它看起来有点粗糙,但它达到了目的。它有助于将主要条件添加到至少要运行的命令组中,如果不是每个步骤的条件 - 我认为您不需要用户决定是否要为每个作业运行运行每个微步骤。

于 2014-12-22T12:46:50.430 回答