jenkins學習之Jenkins流水線parallel併發執行

動態的創建 一個 並行的 流水線。並且可以設置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
                }
            }
        }
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章