app*_*ber 6 groovy jenkins jenkins-pipeline
我有一个简单的声明式管道,里面有函数。如何正确使用函数的命名参数?
def getInputParams(param1='a', param2='b') {
echo "param1 is ${param1}, param2 is ${param2}"
}
pipeline {
...
...
stages {
stage('Test) {
steps {
getInputParams(param1='x', param2='y')
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么命名参数在函数中变为空?
[Pipeline] echo
param1 is null, param2 is null
...
Run Code Online (Sandbox Code Playgroud)
好吧,我可以调用类似的函数getInputParams('x', 'y'),但它不是人类可读的(参数数量将来可能会增加)
Groovy 在 Jenkinsfile 中执行,因此您必须遵循其命名参数的语法。
foo(name: 'Michael', age: 24)
def foo(Map args) { "${args.name}: ${args.age}" }
Run Code Online (Sandbox Code Playgroud)
引用Groovy 的命名参数:
像构造函数一样,普通方法也可以使用命名参数调用。他们需要以地图的形式接收参数。在方法主体中,可以像在法线贴图 (map.key) 中一样访问这些值。
def getInputParams(Map map) {
echo "param1 is ${map.param1}, param2 is ${map.param2}"
}
pipeline {
...
stages {
stage('Test') {
steps {
getInputParams(param1: 'x', param2: 'y')
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5462 次 |
| 最近记录: |