gio*_*oni 26 jenkins jenkins-pipeline jenkins-blueocean
Jenkins Pipeline插件(也称为Workflow)可以使用其他Multibranch插件进行扩展,以自动构建分支和拉取请求.
运行多个配置的首选方法是什么?例如,使用Java 7和Java 8构建.这通常称为矩阵配置(由于语言版本,框架版本等多种组合)或构建变体.
我试过了:
stage步骤串行执行它们.很好,但需要的时间比必要的多.parallel步骤内执行它们,node在其中分配或不分配s.但是我无法使用stage并行内部的步骤来了解它如何可视化的已知限制.有推荐的方法吗?
Ste*_*ain 15
Jenkins.io:在管道编码上下文中,"节点"是执行两件事的步骤,通常是通过从代理上的可用执行程序获取帮助:
通过将它们添加到Jenkins构建队列来安排其中包含的步骤(这样,只要执行器槽在节点上空闲,就会运行相应的步骤)
最佳做法是在节点内执行所有重要工作,例如构建或运行shell脚本,因为阶段中的节点块告诉Jenkins其中的步骤资源密集程度足以进行调度,请求代理池中的帮助,只要他们需要就锁定工作区.
Vanilla Jenkins阶段中的节点块看起来像:
stage 'build' {
node('java7-build'){ ... }
node('java8-build'){ ... }
}
Run Code Online (Sandbox Code Playgroud)
进一步扩展了这一概念,Cloudbees 用Jenkins撰写关于并行性和分布式构建的文章.您的Cloudbees工作流程可能如下所示:
stage 'build' {
parallel 'java7-build':{
node('mvn-java7'){ ... }
}, 'java8-build':{
node('mvn-java8'){ ... }
}
}
Run Code Online (Sandbox Code Playgroud)
您可以通过任一工作流程满足您对可视化管道中不同构建的要求,但我相信Jenkins文档可以获得最佳实践.
为了解决可视化问题@Stephen希望看到,他是对的 - 它不起作用!Jenkins已经提出了这个问题并在此处记录,涉及使用'标记块'的解决方案仍在进行中 :-(
问:是否有文档允许管道用户不要在并行步骤中放置阶段?
答:不,如果这样做,这被认为是不正确的用法; 阶段仅作为管道中的顶级构造有效,这就是为什么标记块作为单独构造的概念已经出现......而且,我的意思是从管道中的并行步骤中删除阶段.
如果您尝试在并行作业中使用舞台,那么您将度过一段美好时光.
ERROR: The ‘stage’ step must not be used inside a ‘parallel’ block.
Run Code Online (Sandbox Code Playgroud)
我建议将声明性矩阵作为在 Jenkins 中运行多个配置的首选方式。它允许您执行每个配置的定义阶段,而无需重复代码。
例子:
pipeline {
agent none
stages {
stage('Test') {
matrix {
agent {
label "${NODENAME}"
}
axes {
axis {
name 'NODENAME'
values 'java7node', 'java8node'
}
}
stages {
stage('Test') {
steps {
echo "Do Test for ${NODENAME}"
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
请注意,声明式矩阵是本机声明式管道功能,因此不需要安装额外的插件。
Jenkins关于矩阵指令的博客文章。
| 归档时间: |
|
| 查看次数: |
10391 次 |
| 最近记录: |