我是Jenkins管道脚本的新手。我正在开发一个Jenkins管道,其中Jenkins代码如下。逻辑如下:
node{
a=xyz
b=abc
//defined some global variables
stage('verify'){
verify("${a}","${b}")
abc("${a}","${b}")
echo "changed values of a and b are ${a} ${b}"
}}
def verify(String a, String b)
{ //SOme logic where the initial value of a and b gets changed at the end of this function}
def verify(String a, String b){
//I need to get the changed value from verify function and manipulate that value in this function}
我需要将初始a
和b
(多个)值传递给verify
函数,并将更改后的值传递给另一个函数。然后,我需要操纵更改的值,并将其传递到管道中的舞台,其中echo将显示更改的值。我怎样才能完成这一切?
答案 0 :(得分:1)
好的,这就是我的意思:
def String verify_a(String a) { /* stuff */ }
def String verify_b(String b) { /* stuff */ }
node {
String a = 'xyz'
String b = 'abc'
stage('verify') {
a = verify_a(a)
b = verify_b(b)
echo "changed values of a and b are $a $b"
}
stage('next stage') {
echo "a and b retain their changed values: $a $b"
}
}
答案 1 :(得分:0)
我发现在阶段之间传递变量的最简单方法是使用环境变量。一个不可否认的主要限制是它们只能是字符串。但我没有发现这是一个大问题,尤其是在自由使用 toBoolean()
和 toInteger()
函数的情况下。如果您需要在阶段之间传递地图或更复杂的对象,您可能需要使用外部脚本构建某些内容或将内容写入临时文件(如果有机会切换代理,请确保隐藏您需要的内容)。但是环境变量几乎在所有情况下都对我有用。
This article is, as its title implies, the definitive guide on environment variables in Jenkins. 你会在那里看到我的评论,它真的帮助我理解 Jenkins 环境变量的复杂性。