Groovy 是否支持位置参数?
我在 Jenkins 共享库 name.groovy
中定义了一个函数
def call(name, age) {
sh """
echo "My name is: ${name}"
echo "My age is: ${age}"
"""
}
当我从管道中调用它时
stage ('Shared Library') {
steps {
name("Foo", "21")
}
}
它工作得很好,我明白了
我叫 Foo
我今年 21 岁
但是,我想按位置设置参数,以便无论它们如何放置都能正确打印。
但是当我这样做的时候
stage ('Shared Library') {
steps {
name(age: "21", name: "Foo")
}
}
我明白了
My name is null
My age is null
有没有办法正确设置它?
最佳答案
您在这里要问的是如何使用 Map 类型作为自定义步骤方法全局变量的输入参数。 age: "21", name: "Foo"
在这种情况下将是一个 Map。您可以像这样为您的自定义步骤重构全局变量方法:
def call(Map args) {
sh """
echo "My name is: ${args.name}"
echo "My age is: ${args.age}"
"""
}
然后您可以在管道步骤中调用:
stage ('Shared Library') {
steps {
name(age: '21', name: 'Foo')
}
}
具有预期的结果。
我们还可以使用一些固有的 Groovy 方法和空合并运算符的参数检查来改进该方法:
def call(Map args) {
// provide defaults for arguments
args.name = args.name ?: 'no name'
args.age = args.age ?: 'unknown age'
// output name and age to stdout
print "My name is: ${args.name}"
print "My age is: ${args.age}"
}
关于jenkins - 如何在 Jenkins Groovy 中设置位置参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69290082/