我想设置图像
中描述的并行阶段在这种情况下,设置非常繁重,因此必须在并行组启动G1,G2和G3之前完成一次。同时,阶段:初始检查有2个项目,我想并行运行。
这可以在声明性管道中使用,还是必须使用脚本?
我在文档中看不到这种工作的能力
Stages {
stage ('P1') {
}
stage ('P2 Setup') {}
stage ('P2') {
//Here it can contain either Steps or Parallel. I can only do
parallel {
stage ('g1') {} //Parallel tests
stage ('g2') {}
stage ('g3') {}
}
}
stage ('P2 Cleanup') {}
}
您是否遇到过类似情况以及您的解决方案是什么样的?
当然,解决方法是将安装和清理作为每个组的一部分,但就像我说的那样,它非常密集,如果图表显示的是不可能,我只会接受它。
解决方案2
stage ('p2') {
script {
//Some scripting here to get the result?
}
}
答案 0 :(得分:1)
DSL或声明性管道尚不支持此功能。您基本上正在寻找嵌套并行阶段,如here
所述问题仍在Jenkins社区开放,您可以查看here
在您的情况下,您可以并行启动阶段 P1 和阶段设置。但是,将P1作为后台进程启动非常重要,因为从图中可以看出P1是一个耗时的操作。 组阶段完成后,您可以收集P1的状态并继续 S2 。
stages{
stage('Build'){
steps{
echo "Build"
}
}
stage('Init'){
parallel{
stage('P1'){steps{ echo "launch p1 in background"}}
stage('setup'){steps{echo "setup"}}
}
}
stage('Group'){
parallel{
stage('P1'){steps{echo "p1"}}
stage('P2'){steps{echo "p2"}}
stage('P3'){steps{echo "p3"}}
}
}
stage('Cleanup'){
steps{
echo "cleanup"
}
}
stage('Check P1 status'){
steps{
echo "Check"
}
}
stage('S2'){
steps{
echo "S2"
}
}
}
答案 1 :(得分:-1)
我认为你正在寻找这个
node {
stage("P1"){}
stage("p2") {}
stage("p3") {
parallel (
"firstTask" : {
},
"secondTask" : {
}
)
}
}