在Jenkins中,我想把一个变量的值从一个阶段传递到另一个阶段中的一个函数(在库中定义)。我用env变量进行了测试,但是这个函数将接受变量的初始值。我的Jenkinsfile代码是:
@Library('shared-library')_
pipeline {
agent any
environment {
TF_WORK_DIR = '.'
}
stages {
stage('Set-Environment') {
steps {
script {
println("----------------------------Init Script-----------------------------")
TF_WORK_DIR = "file"
}}
}
stage('Init') {
steps {
script{
println("TF_WORK_DIR in init is ${TF_WORK_DIR}")
if (TF_WORK_DIR != ".") {
println("TF_WORK_DIR in if condition init is ${TF_WORK_DIR}")
function()
}
else {
println("TF_WORK_DIR in else condition init is ${TF_WORK_DIR}")
function()
}
}
}
}
}}
字符串
我的职责是
def call(timeoutMinutes = 10) {
try {
echo "TF_WORK_DIR inside function ${TF_WORK_DIR}"
} catch (Exception e) {
currentBuild.result = 'FAILURE'
echo "An error occurred: ${e.getMessage()}\n"
}}
型
电流输出
----------------------------Init Script-----------------------------
TF_WORK_DIR in TF init is file
TF_WORK_DIR in if condition TF init is file
TF_WORK_DIR inside function .
型
预期输出
----------------------------Init Script-----------------------------
TF_WORK_DIR in init is file
TF_WORK_DIR in if condition init is file
TF_WORK_DIR inside function file
型
我还尝试在管道外而不是在环境块内定义变量,但没有成功。我是否遗漏了什么?如何使函数接受TF_WORK_DIR的更新值?
谢谢
2条答案
按热度按时间jgzswidk1#
你需要在声明性管道外定义变量:
字符串
ukdjmx9f2#
最后,我修改了函数代码来接受一个参数,并将该变量作为参数传递。谢谢。