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

时间:2018-06-18 15:52:17

标签: groovy jenkins-pipeline

我有一个contants.groovy文件,如下所示

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

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

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

constants."${gitId}"表示"无法从null对象"获取gitID。我怎么得到它?

1 个答案:

答案 0 :(得分:3)

这是因为它们是局部变量,不能从外部引用。使用@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
} 

您可以在this answer

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