【问题标题】:How execute a Jenkins build job as part of the build of another job如何执行 Jenkins 构建作业作为构建另一个作业的一部分
【发布时间】:2013-07-24 09:33:22
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: build jenkins continuous-integration


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      • 我更喜欢允许我继续使用 Jenkins UI 来修改配置的解决方案。无论如何感谢您的回答 - 我相信这对其他人会有所帮助。
      猜你喜欢
      • 2014-08-06
      • 2022-06-10
      • 1970-01-01
      • 2014-04-08
      • 2012-05-29
      • 2018-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多