Jenkins -将变量从一个阶段传递到另一个阶段中的函数

yqkkidmi  于 2023-11-17  发布在  Jenkins
关注(0)|答案(2)|浏览(150)

在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的更新值?
谢谢

jgzswidk

jgzswidk1#

你需要在声明性管道外定义变量:

def Map myMap = [:]

pipeline {
  agent any
  stages{
    stage('a'){
      steps{
        script{
          myMap.paramA = 'test'
        }
      }
    }
    stage('B'){
      steps{
        script{
          print(myMap.paramA)
        }
      }
    }
  }
}

字符串

ukdjmx9f

ukdjmx9f2#

最后,我修改了函数代码来接受一个参数,并将该变量作为参数传递。谢谢。

相关问题