我们正在考虑将Jenkins Pipeline插件用于一个相当复杂的项目,该项目由多个交付组成,这些交付需要在合并之前使用不同的工具(在不同的机器上)构建。尽管如此,使用单个进行完整的构建似乎很容易Jenkinsfile,而且我喜欢Pipeline随附的git分支的自动发现。
Jenkinsfile
但是,在这一点上,我们为每个交货都有工作,并使用基于构建流的“元”工作来协调各个工作。这样做的好处是,如果只进行了很小的更改,它也允许仅开始一项单独的工作,以查看此交付是否仍然可以编译。
为了模拟这一点,想到了一些想法:
load``Jenkinsfile``Jenkinsfile
if
这些可行的选择,还是有更好的选择?
您可以做的是编写一个流水线脚本,该脚本在单个阶段周围具有“ 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所建议的,我将阶段本身放到了主脚本中,并且仅将执行代码放到了条件脚本中。这样可以确保工作的可视化更加可靠