jenkins学习之Jenkins流水线parallel并发执行

南楼画角 提交于 2021-01-23 09:03:51

动态的创建 一个 并行的 流水线。并且可以设置agent的。

例1

在这里插入图片描述

pipeline {
    agent any
    stages {
        stage('BuildAll') {
            parallel {
                stage('build-win') {
                    steps {
                        sh "env | grep -i NODE_NAME"
                        runParallel items: ("a".."d").collect { "Win-${it}" }
                    }
                }

                stage('build-Mac') {
                    steps {
                        sh "env | grep -i NODE_NAME"
                        runParallel items: ("a".."d").collect { "Mac-${it}" }
                    }
                }
            }
        }
    }
}

def runParallel(args) {
    parallel args.items.collectEntries { name ->
        [
        "${name}": {
            node('master') {
                stage("${name}") {
                    stage("${name}-a") {
                        sh "env | grep -i NODE_NAME"
                    }
                    stage("${name}-b") {
                        sh "env | grep -i NODE_NAME"
                    }
                }
            }
        }
        ]
    }
}

例2

在这里插入图片描述

pipeline {
   
   
  agent any
  stages {
   
   
    stage('build') {
   
   
      steps {
   
   
        runParallel items: ("a".."f").collect {
   
    "Stage ${it}" }
      }
    }
  }
}

def runParallel(args) {
   
   
  parallel args.items.collectEntries {
   
    name -> [ "${name}": {
   
   
    stage("${name}") {
   
   
      echo name
    }
  }]}
}

例3


pipeline {
   
   
    agent {
   
   label 'master'}
    stages {
   
   
        stage('Build apps(s)') {
   
   
            steps {
   
   
            
                script {
   
   
                    def nodeList = "bf-01,bf-02,bf-03".split(",").findAll {
   
    it }.collect {
   
    it.trim() }
                    def jobs = [:]

                    for (int i = 0; i < nodeList.size(); i++) {
   
   
                        def app = nodeList[i]
                        jobs["jobs-${app}"] = {
   
   
                            node('another-master') {
   
   
                                stage("Build ${app}") {
   
   
                                    echo "Build ${app}"
                                }
                            }
                        }
                    }
                    parallel jobs
                }
            }
        }
    }
}

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!