次のように、動的に定義された関数のセットを並列化しようとします。
def somefunc() {
echo 'echo1'
}
def somefunc2() {
echo 'echo2'
}
running_set = [
{ somefunc() },
{ somefunc2() }
]
pipeline {
agent none
stages{
stage('Run') {
steps {
parallel(running_set)
}
}
}
}
そして私が最終的に何をするかです:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 17: No "steps" or "parallel" to execute within stage "Run" @ line 17, column 9.
stage('Run') {
ステップは「実行」ステージ内で定義されますが。とにかく、実行を実現したいのは、動的に定義された関数のセットで、並列に実行します。
宣言型パイプラインスクリプトで動的並列ブロックを使用する場合は、Jenkinsfileに2つの変更を適用する必要があります。
running_set
_をMap
のように["task 1": { somefunc()}, "task 2": { somefunc2() }]
として定義する必要があります-このマップのキーは並列ステージ名として使用されますrunning_set
_ブロック内のparallel
メソッドに_script {}
_を渡す必要があります更新されたJenkinsfileは次のようになります。
_def somefunc() {
echo 'echo1'
}
def somefunc2() {
echo 'echo2'
}
running_set = [
"task1": {
somefunc()
},
"task2": {
somefunc2()
}
]
pipeline {
agent none
stages{
stage('Run') {
steps {
script {
parallel(running_set)
}
}
}
}
}
_
そして、Blue Ocean UIでは次のようになります。