【发布时间】:2011-09-26 08:05:49
【问题描述】:
您如何处理将 Jenkins 作业映射到您的构建过程,您是否能够在继承时构建级联配置?
对于任何给定的构建,我将至少有三个工作(标准持续集成/夜间、安全扫描、覆盖),然后是一些下游集成测试工作。配置切片器插件处理跨作业的某些方面,但每个作业仍然是非常独立的实体,与其组中的其他作业没有关系。
我最近看到了 QuickBuild,它具有作业继承,其中父作业可以定义一组标准步骤,其子作业可以覆盖和专门化。使用 Jenkins,我有工作副本,这很好,直到我需要更改某些内容。借助 QuickBuild,工作之间的关系让我可以毫不费力地传播我的更改。
我一直试图弄清楚如何在 Jenkins 中处理这个问题。我可以使用参数化构建触发器插件来允许作业调用其他人并覆盖方面。然后我会从被调用的作业中收集数据给它的调用者。我怀疑我会遇到一系列问题,其中有些方面我无法覆盖,这将迫使我在自己的脚本中实现 Jenkins 功能,从而降低 Jenkins 的用处。
您如何在 Jenkins 中处理构建作业的复杂性?您听说过 QuickBuild 的任何严重问题吗?
【问题讨论】:
-
我今天一直在研究这些问题,尽管对 QuickBuild 没有任何兴趣。特别是我想要 CI 和 Nightly 构建的不同配置选项,例如签出干净的工作空间与执行还原+更新,构建工件的存储时间,以及如何存档或部署工件——同时保持相同的列表为每个构建说明。 Matrix/multiconfig 插件没有提供足够的选项。我认为我们可以通过仅执行构建本身的子作业来管理它,使用参数化工作区调用 - 但它增加了复杂性。
-
如果您的每项工作都执行 CI 的一个方面,那么工作之间就不需要有任何重复的任务。我们有一个构建作业,它有一个下游作业,它分阶段运行集成测试。如果希望定期运行其中一些分阶段测试,也可以在这些作业中将其设置为定时触发器。这样构建工作只是构建,测试工作只是进行测试等等。如果您使用“克隆工作空间的存档”任务,则下游作业可以访问构建工件。如果您愿意,可以扩展答案吗?
-
我想知道一年后你是否找到了解决这个问题的办法。
-
如果我想从 Pipeline 继承(如果可能的话),你有什么建议我将如何使用继承插件或模板插件?
-
@GuyAvraham 请查看我的回答(关于这个问题的最后一个),详细了解如何通过设计回避继承问题。那个插件我没试过,因为目前我没有那个需求,
标签: build jenkins continuous-integration quickbuild