jenkins并行和系列管道脚本

时间:2018-03-14 12:24:16

标签: jenkins groovy jenkins-pipeline

Blue ocean pipeline graph

上述两个连续阶段是否可能连续系列启动复制server1 stopservers server1在一行而不是每个阶段结束。我们有一种方法,复制停止服务器将有4个并行连续执行,除非在我们有4个并行执行的图像中,每个阶段在复制之前开始并在停止服务器之后结束.Below就是我正在寻找的情况 ----------- --------------复制----------------------- stopservers
| |
| ---------- ----------- Server1的服务器1 ---------------- |
| |
| ---------- -----------服务器2服务器2 ---------------- |
| |
| ---------- ---------- server(服务器)server(服务器)----------------- |
| |
----------- ----------服务器4 -----------------服务器4
我的代码很简单,如下所示

node {  
   stage('copy'){  
       parallel 'server1': {  
                    echo "server1"  
       },  
       'server2': {  
            echo "server2"  
       },  
       'server3': {  
               echo "server3"  
        },  
       'server4': {  
           echo "server4"  
       }  
   }  
   stage('stopServers'){  
       parallel 'server1': {  
                    echo "server1"  
       },  
       'server2': {  
                    echo "server2"  
       },  
       'server3': {  
           echo "server3"  
       },  
       'server4': {  
            echo "server4"  
       }  
}
你可以告诉我有可能吗?

1 个答案:

答案 0 :(得分:1)

听起来你只需要一个阶段,其中每个步骤都是copy步骤的复合,然后是stopServer步骤。

def copy(String server) {
    echo "copy $server"
}

def stopServer(String server) {
    echo "stopServer $server"
}

def servers = [ 'server1', 'server2', 'server3', 'server4' ]

node {
    stage('copy and stopServer') {

        // Construct the steps to run in parallel
        def parallelSteps = [:]
        def i = 0
        servers.each { server ->
            parallelSteps[server] = {
                // This is just to show that we don't wait for all the copy steps
                // before we start with stopServer
                sleep i++
                copy(server)
                stopServer(server)
            }
        }

        parallel parallelSteps
    }
}