Build 如何将Jenkins构建作业作为另一个作业构建的一部分执行

Build 如何将Jenkins构建作业作为另一个作业构建的一部分执行,build,jenkins,continuous-integration,Build,Jenkins,Continuous Integration,我有一系列的工作,这些工作只在他们建立的分支和其他一些属性上有所不同。这些作业有一个相当复杂的构建脚本,因此我希望避免维护该脚本的多个副本 避免冗余配置的一种可能方法是使用构建脚本设置一个主作业,并使用与其他作业不同的参数触发该作业。然而,这种方法有以下缺点: 当分析一个特定参数集出现的问题时,触发作业(从下游主作业继承其构建状态)与触发主作业之间存在一个额外的间接关系 对于使用git子模块的项目,在主作业中签出不同的分支要么容易出错,要么代价高昂。为每个分支提供一个单独的工作空间会更好 因

我有一系列的工作,这些工作只在他们建立的分支和其他一些属性上有所不同。这些作业有一个相当复杂的构建脚本,因此我希望避免维护该脚本的多个副本

避免冗余配置的一种可能方法是使用构建脚本设置一个主作业,并使用与其他作业不同的参数触发该作业。然而,这种方法有以下缺点:

  • 当分析一个特定参数集出现的问题时,触发作业(从下游主作业继承其构建状态)与触发主作业之间存在一个额外的间接关系
  • 对于使用git子模块的项目,在主作业中签出不同的分支要么容易出错,要么代价高昂。为每个分支提供一个单独的工作空间会更好
因此,我的问题是:不触发主作业,是否可以在触发作业中“内联”执行主作业?


例如,如果主作业的控制台输出将直接打印在触发作业的控制台中,那就好了。此外,主作业应使用触发作业的工作区(或触发作业工作区子文件夹中的工作区)。

我对运行500多个构建作业的Hudson实例有类似的可管理性问题-使用gui手动维护这么多作业是不切实际的。但是,您可以通过使用作为jar文件提供的CLI,以远程和编程方式在Jenkins和Hudson中提供作业[https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI]。

我用python包装了它,并创建了一个XML文件来保存构建配置。这还提供了将CI实例“重置”回已知配置的功能—如果您怀疑生成失败是由UI中的手动更改引起的,或者如果您正在为部署到的每个环境(即开发、测试、生产)使用不同的CI服务器,并且需要提供新的配置,则此功能非常方便

如果使用这种方法,您可以编写代码来生成XML文件和实例的配置。我相信这是一种稳健的方法,因为您还可以将CI配置保留在修订控制系统中

虽然这不是一个简单的解决方案,但我无法找到或命名一个能满足您要求的插件,这确实为您提供了编写一个插件的机会。

正好提供了我想要的功能

它提供了一个构建步骤“从另一个项目执行构建器”,该步骤允许在触发作业中配置其他作业时执行这些作业的构建步骤


这太棒了:我现在可以从构建作业中“提取方法”(到新的“模板”作业中),并根据需要将它们插入到一起

我更喜欢一个允许我继续使用Jenkins UI修改配置的解决方案。无论如何,谢谢你的回答,我相信这对其他人会有帮助的。