我有一個場景,我想以這樣一種方式運行,即外部地圖應該并行運行,而外部地圖之一的內部地圖應該按順序運行。我有類似下面提到的東西,但在我看來,outer_map1 和 outer_map2 將按順序運行,而不是在并行代碼摘錄中運行:
stage('test'){
parallel outer_map1
outer_map2.each{ key, value ->
parallel value()
}
}
在這里,outer_map1 包含作為字串的鍵,值將是要執行的命令,并且該映射的所有專案都應該并行運行,而外映射2 包含作為字串的鍵,值將是映射,并且該內部映射再次包含作為字串和值的鍵將是要執行的命令。因此,對于每個鍵的 outer_map2 值將是一個內部映射,它應該并行運行,而 outer_map2 的每個專案應該按順序運行。
因此,這里的主要挑戰是確定outer_map1 和outer_map2 如何并行運行。
我可以為 outer_map1 和 outer_map2 設定 2 個不同的階段,但如果我采用這種方法,那么我就不知道如何并行運行這 2 個階段。
uj5u.com熱心網友回復:
您可以將執行部分outer_map2作為專案添加到outer_map1. 這樣, 的整個執行outer_map2將與 的所有其他執行并行進行outer_map1。
就像是:
stage('test'){
outer_map1['outer-map2-branch-name'] = {
outer_map2.each { key, value ->
parallel value
}
}
parallel outer_map1
}
如果您正在使用宣告式管道并希望將它們分成兩個階段以提高可讀性,則可以混合使用宣告式和腳本式管道:
pipeline {
agent any
stages {
stage('Parallel Stage') {
parallel {
stage('outer map 1') {
steps {
script{
parallel outer_map1
}
}
}
stage('outer map 2') {
steps {
script {
outer_map2.each {
echo "executing ${it.key}"
parallel it.value
}
}
}
}
}
}
}
}
這兩個選項都應該產生您想要的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/489946.html
