如何在 Jenkins Groovy 中设置位置参数
Posted
技术标签:
【中文标题】如何在 Jenkins Groovy 中设置位置参数【英文标题】:How To Set Positional Arguments in Jenkins Groovy 【发布时间】:2021-11-16 06:23:46 【问题描述】: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")
效果很好,我明白了
My name is Foo
My age is 21
但是,我想按位置设置参数,以便无论它们如何放置都能正确打印。
但是当我这样做时
stage ('Shared Library')
steps
name(age: "21", name: "Foo")
我明白了
My name is null
My age is null
有没有办法正确设置?
【问题讨论】:
【参考方案1】:您在这里要问的是如何使用 Map 类型作为自定义 step 方法全局变量的输入参数。在这种情况下,age: "21", name: "Foo"
将是一个地图。您可以像这样为您的自定义步骤重构全局变量方法:
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 方法和使用 null 合并运算符的参数检查来改进该方法:
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 Groovy 中设置位置参数的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 HTTPBuilder 在 Groovy 中设置 GET-Response
如何在 Blazemeter 测试中通过 Jenkins 在 .jmx 文件中设置参数