从 Jenkins Pipeline 中的不同文件获取变量

问题描述 投票:0回答:2

我有一个

contants.groovy
文件如下

def testFilesList = 'test-package.xml'
def testdataFilesList = 'TestData.xml'
def gitId = '9ddfsfc4-fdfdf-sdsd-bd18-fgdgdgdf'

我有另一个 groovy 文件,将在 Jenkins 管道作业中调用

def constants
node ('auto111') {
  stage("First Stage") {
    container('alpine') {
      script {
        constants = evaluate readTrusted('jenkins_pipeline/constants.groovy')
        def gitCredentialsId = constants."${gitId}"
      }
    }
  }
}

但是

constants."${gitId}"
表示“无法从空对象获取gitID”。我怎样才能得到它?

groovy jenkins-pipeline
2个回答
6
投票

因为它们是局部变量,不能从外部引用。使用

@Field
将它们变成字段。

import groovy.transform.Field

@Field
def testFilesList = 'test-package.xml'
@Field
def testdataFilesList = 'TestData.xml'
@Field
def gitId = '9ddfsfc4-fdfdf-sdsd-bd18-fgdgdgdf'

return this;

然后在主脚本中,您应该使用

load
步骤加载它。

script {
    //make sure that file exists on this node
    checkout scm
    def constants = load 'jenkins_pipeline/constants.groovy'
    def gitCredentialsId = constants.gitId
} 

您可以在这个答案

中找到有关变量范围的更多详细信息

0
投票

groovy 文件

lib.groovy

varFoo = "bar"

return this

精彩主要:

lib = load "lib.groovy"
print("${lib.varFoo}")
© www.soinside.com 2019 - 2024. All rights reserved.