我正在努力将内部编写的基于java的构建工具迁移到Jenkins。内部构建工具为各种产品及其各自的版本提供了1000多个作业,每个作业有10个以上的步骤,每个步骤都有一些代码行可以执行。这个内部构建工具是用Java编写的。
内部构建工具除了读取以下文件并创建动态jsp视图并从db加载构建历史并显示它之外什么都不做。
pdplanner:clean:YES:YES:runant -Dproperties_file = build / dallas78.build.properties -f buildjars.xml clean_all
pdplanner:version:YES:NO:runant -Dproperties_file = build / dallas78.build.properties version
如果我们开始在jenkins中为所有1000个工作设置每个工作,那么为所有工作成功构建需要一年多的时间。我想做一些自动化,而动态Jenkins config.xml可以通过读取每个项目的spec文件的所有这些属性来创建。
产品管理团队的另一个规范是 - 我们应该将每个步骤作为jenkins工作中的复选框,因此如果有人想要执行某些步骤,他们可以相应地取消选中它。
我很困惑我用不同的选项完成这项任务,但还没有结束......我确实考虑过可能不适合我的方式的模板插件。您能否分享您对此问题的看法/建议并分享您的想法?
答案 0 :(得分:3)
管理层需要偶尔俯视地球。苹果不是橙子。如果你有一个苹果,并想要一个橙子,你不能把苹果涂成橙色,并称之为橙色。
Jenkins与你的内部java构建系统不同。如果您要转移到Jenkins,那是因为您想 Jenkins ,而不是别的。不要期望(或者说管理层不应该期待)它与之前的系统完全一样,否则:你为什么要首先开始改变?
自动创建config.xml。
如果你可以编写一些会在文件系统上自动创建config.xml的脚本,那就去做吧。这些配置不会被加载到Jenkins,直到您选择"从磁盘重新加载"从全局配置,或重新启动詹金斯。
有许多插件可以动态构建作业,范围从简单替换某些令牌文本的简单Jobcopy Builder到提供它自己的工作描述语言的更复杂的Job DSL。
每一步的复选框。
阅读我关于将苹果涂成橙色的评论。詹金斯没有这个。你最好的共同点是为每一步创建复选框参数,然后将每一步包装到Conditional Buildstep插件中,这将检查变量的值,并仅在选中时执行步骤。
你可能还需要Flexible Publish插件来为后期构建步骤提供相同的功能。
答案 1 :(得分:1)
我不确定你是否还在寻找这个解决方案,每个步骤都有复选框,但我有类似的情况&我只是想分享我采取的方法。
首先,Jenkins似乎是一个很棒的工具,它为我们提供了许多选项,它提供了远程执行功能。从那里开始,我认为我们应该在编程逻辑中处理其余部分。
因此,对于我们所拥有的情况,我希望最终用户选择要为每次运行执行作业的哪个部分(步骤),我添加了一个构建参数 - 文本类型,但我将描述设置为引导用户输入一个二进制数字,它捕获我们想要的输入(如11111 - 执行所有步骤,10000 - 仅执行第一步等...我们可以添加一些检查以确保其二进制)。然后,我在Jenkins中的(主)步骤运行的脚本中使用了这个构建参数,以决定运行哪些子步骤(这不是Jenkins步骤)。祝好运。欢呼声。
虽然它看起来有点粗糙,但它有助于达到目的。它有助于为要运行的命令组添加主要条件,如果不是每个步骤的条件 - 我认为您不需要用户决定是否为每个作业运行每个微步骤。