【问题标题】:Load env variables successfully in Jenkins pipeline but not while the pipeline was used as shared library在 Jenkins 管道中成功加载环境变量,但在管道用作共享库时加载
【发布时间】:2017-12-11 22:09:25
【问题描述】:

在我的声明式 jenkins 管道代码的一个阶段,它执行一个 bash 脚本(sh '''./a.sh''',脚本“a.sh”在外部维护) - 在该脚本中,“jarVersion”的值被注入 ${WORKSPACE}/。 jarVersion (echo "jarVersion=${jarVersion}" > ${WORKSPACE}/.jarVersion)。在后期,我们需要获取 jarVersion 的值。我们使用load "${WORKSPACE}/.jarVersion"${jarVersion} 来获取值。当我们在管道脚本中这样做时,它会起作用。

但是,当我们将此管道设置为共享库(放入/vars/testSuite.groovy)并在另一个管道脚本中调用它时。它无法识别 var ${jarVersion}

请告知如何解决该问题。一个常见的问题是:如何将脚本中的值从阶段 A 转移到阶段 B?

    stage('getJarVersion'){
        steps{
            script{
                load "${WORKSPACE}/.jarVersion"
                currentBuild.description = "jarVersion:${jarVersion}"
            }
        }
    }

我希望它可以像在管道脚本中一样工作。

但它显示:

groovy.lang.MissingPropertyException: No such property: jarVersion for class: testSuite
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:34)
    at com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
    at testSuite.call(/jenkins/jobs/TestSuite1/builds/11/libs/pipelineUtilities/vars/testSuite.groovy:84)

【问题讨论】:

    标签: jenkins environment-variables jenkins-pipeline jenkins-shared-libraries


    【解决方案1】:

    对于同一个 groovy 文件下的阶段,您必须在阶段块之外和节点块之前声明对象。所以对于每个阶段,你可以在变量内部定义值:

    Pipeline {
    
    def my_var
    
     stage('stage1'){
     ---------
     }
    
     stage('stage2'){
     ---------
    }
    
    }
    

    如果要为每个文件定义一个阶段,则必须使用输入对象创建闭包并将其传递给父 groovy 文件的调用:

    test.groovy:

    def call(def my_obj, String my_string) {
    
    
       stage('my_stage') {
         println(my_obj)
       }
    }
    

    parent_test.groovy

    test(obj_value,string_value)
    

    【讨论】:

      猜你喜欢
      • 2022-09-28
      • 1970-01-01
      • 2017-08-09
      • 1970-01-01
      • 2018-10-02
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多