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

时间:2013-07-24 09:33:23

标签: build jenkins continuous-integration

我有一组作业,它们只在他们构建的分支和其他一些属性中有所不同。这些作业有一个相当复杂的构建脚本,所以我想避免维护该脚本的多个副本。

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

  • 在分析一个特定参数集发生的问题时,触发作业(从下游主作业继承其构建状态)到触发的主作业会有一个额外的间接。
  • 对于使用git子模块的项目,检查主作业中的不同分支已经显示出容易出错或非常昂贵。为每个分支设置一个单独的工作区可以更好地工作。

所以我的问题是:是否可以在触发作业中“内联”执行主要工作,而不是触发主要工作?

E.g。如果主要作业的控制台输出将直接打印在触发作业的控制台中,那将是很好的。此外,主要作业应使用触发作业的工作空间(或触发作业工作空间的子文件夹中的工作空间)。

2 个答案:

答案 0 :(得分:3)

Template Project Plugin完全提供了我正在寻找的功能。

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

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

答案 1 :(得分:0)

我有一个运行500多个构建作业的Hudson实例存在类似的可管理性问题 - 使用gui手动维护许多作业是不切实际的。但是,您可以使用 CLI 远程和编程地在Jenkins和Hudson中配置作业 - 它是作为jar文件提供的 [https://wiki.jenkins-ci.org/display/ JENKINS /詹金斯+ CLI]。

我将它包装在python中并创建了一个XML文件,用于保存构建配置。这还提供了将CI实例“重置”回已知配置的能力 - 如果您怀疑构建失败是由UI中的手动更改引起的,或者您为部署到的每个环境使用不同的CI服务器(即dev) ,测试,产品)并需要提供一个新的。

如果您使用此方法,您可以编写代码来生成XML文件并配置您的实例。我相信这是一种强大的方法,因为您可以将CI配置保持为修订控制系统。

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