当前位置: 首页 > 面试题库 >

将管道的各个部分作为单独的作业运行

罗业
2023-03-14
问题内容

我们正在考虑将Jenkins
Pipeline插件用于一个相当复杂的项目,该项目由多个交付组成,这些交付需要在合并之前使用不同的工具(在不同的机器上)构建。尽管如此,使用单个进行完整的构建似乎很容易Jenkinsfile,而且我喜欢Pipeline随附的git分支的自动发现。

但是,在这一点上,我们为每个交货都有工作,并使用基于构建流的“元”工作来协调各个工作。这样做的好处是,如果只进行了很小的更改,它也允许仅开始一项单独的工作,以查看此交付是否仍然可以编译。

为了模拟这一点,想到了一些想法:

  • 在顶层使用不同的Jenkinsfiles进行交付;似乎Multibranch Pipeline作业不允许配置要使用的(https://issues.jenkins-ci.org/browse/JENKINS-35415),但是,为各个交货创建作业仍处于打开状态。load``Jenkinsfile``Jenkinsfile
  • 为“顶层”作业提供配置选项,并if为中的所有交付提供,Jenkinsfile以便能够选择应构建的交付。但是,这将在一个管道中混合使用不同的构建类型,并且至少会弄乱构建时间的估计。

这些可行的选择,还是有更好的选择?


问题答案:

您可以做的是编写一个流水线脚本,该脚本在单个阶段周围具有“ if”防护,如下所示:

stage "s1"
if (theStage in ["s1","all"]) {
    sleep 2
}

stage "s2"
if (theStage in ["s2", "all"]) {
    sleep 2
}

stage "s3"
if (theStage in ["s3", "all"]) {
    sleep 2
}

然后,您可以通过将参数“ theStage”设置为“
all”来使用该脚本并立即运行所有阶段的“主要”作业。当所有阶段同时运行时,此作业将收集统计信息,并为您提供有用的估计时间。

此外,您可以使用该脚本创建一个“部分运行”作业,并根据您要运行的阶段对其进行参数设置。但是,该估算将不是很有用。

请注意,正如Martin Ba所建议的,我将阶段本身放到了主脚本中,并且仅将执行代码放到了条件脚本中。这样可以确保工作的可视化更加可靠



 类似资料:
  • 我怀疑存在性能问题,特别是当长时间运行的API击中控制器时。 是否可以将作业作为单独的进程。让spring boot应用程序具有繁重工作的最佳实践是什么。

  • 现在多分支管道作业类型已经成熟,还有什么理由再使用简单的管道作业类型吗?即使您现在只有一个分支,考虑到未来多个分支的可能性可能是明智的,那么假设您将Jenkins管道存储在SCM中,那么为您的Jenkins管道使用管道作业类型与始终使用多分支管道作业类型的动机是什么?现在这两种作业类型之间是否存在功能平价?

  • 是否有人知道从文件中设置作业属性(特别是构建触发器)的正确方法?(多分支管道作业中的声明性管道脚本)。 为了清晰起见,我需要为多分支项目中的底层作业设置特定的构建触发器。我可以在GUI中配置总体多分支项目的触发器。 尝试过这里列出的方法:Jenkins多分支管道和指定上游项目 詹金斯:在上游更改时触发多分支管道 如何使用Jenkins管道属性步骤? 从v0开始,我就听到这样的错误。8我应该使用选项

  • null null 我怎样才能想象这些工作类型之间的关系?还有其他插件支持这些类型吗?

  • 是否有可能通过一个作业DSL创建多分支管道作业,该作业通过“管道脚本”而不是每个Git存储库包含的Jenkinsfile来定义作业? 我们希望避免在100个Git存储库中生成和维护相同的Jenkins文件(除了一些参数)。 目前,我们正在使用管道作业和工厂作业播种的作业DSL,但目前我们在多分支构建(功能分支)方面受到限制。因此,我们希望切换到多分支管道作业,但在播种方面我们受到了限制。 我知道我

  • 问题内容: 我对建筑文物一詹金斯多分支管道,有分支机构的,等等。 我想在每个分支的基础上启用基于项目的安全性,即仅允许开发人员运行构建的分支作业,而不能运行其他任何分支作业,因为这样做会产生不良影响。 我知道有基于项目的安全性,但是每个分支都没有。是否存在?我们在更新Jenkins方面落后,目前正在运行Jenkins 。 否则,我想我可能必须有一个单独的上游作业来调用下游作业的正确分支,并使具有特