java - Jenkins 的内部构建工具

标签 java jenkins jenkins-plugins jenkins-cli jenkins-scriptler

<分区>

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

内部构建工具除了读取以下文件和创建动态 jsp View 并从 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 可以通过读取每个项目的所有这些属性和规范文件来创建。

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

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

最佳答案

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

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

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

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

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

您可能还需要 Flexible Publish插件对构建后步骤具有相同的功能。

关于java - Jenkins 的内部构建工具,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26994718/

相关文章:

JAVA_HOME 未指向 JDK

java - 如何消除圈复杂度

docker - 使用 docker.sock 在 Kubernetes 上托管 Jenkins

docker - 如何根据 Kubernetes 插件上的构建队列扩展 Jenkins 从站

Jenkins 优先级排序器插件 - 如何使用 BuildPriority 参数

java - 防止 FlowLayout 垂直居中

jenkins - 将 opencover xml 输出转换为 ncover xml

jenkins - Jenkins:在项目页面上显示最后的控制台输出

github - Jenkins 可嵌入构建状态图标未显示

java - 在 Intellij IDEA 图上查找两个类之间的依赖关系链