代码之家  ›  专栏  ›  技术社区  ›  Damien-Amen

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

  •  2
  • Damien-Amen  · 技术社区  · 6 年前

    我有一个 contants.groovy 文件如下

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

    我还有一个groovy文件将在jenkins pipeline job中调用

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

    但是 constants."${gitId}" 表示“无法从空对象获取gitid”。我怎么得到它?

    1 回复  |  直到 6 年前
        1
  •  4
  •   Vitalii Vitrenko    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
    } 
    

    您可以在 this answer