我已经到了一个想要使用迭代来节省在构建多平台时舞台级别上冗余代码的地步。
以下是展示我正在尝试做的事情:
def map = [
Bob : 42,
Alice: 54,
Max : 33
]
pipeline {
agent none
stages {
map.each { entry ->
stage ($entry.key) {
steps{
timestamps{
echo "$entry.value"
}
}
}
}
}
}
我认为这里的概念非常简单,但构建失败并告诉我:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 13: Expected a stage @ line 13, column 9.
map.each { entry ->
^
WorkflowScript: 12: No stages specified @ line 12, column 5.
stages {
^
2 errors
这是否意味着Jenkins尚未支持用户在阶段上进行迭代?如果我所做的有任何问题,请告诉我。谢谢!
-----编辑------
顺便说一下,@NonCPS也尝试了,我不认为这是管道脚本中的each问题...
def map = [
Bob : 42,
Alice: 54,
Max : 33
]
pipeline {
agent none
stages {
iter_stages map
}
}
@NonCPS
def iter_stages(dd) {
dd.each { entry ->
stage ($entry.key) {
steps{
timestamps{
echo "$entry.value"
}
}
}
}
}
阶段('阶段2') {
... map.each { entry -> stage (entry.key) { . } ... } } } - vikas pachisiastage
块包装在一个script
块中。 - haridsv