gpt4 book ai didi

jenkins - 如何在 Jenkins Groovy 中设置位置参数

转载 作者:行者123 更新时间:2023-12-04 14:49:30 24 4
gpt4 key购买 nike

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com