jenkins管道变量范围和动态选项分配

时间:2020-08-27 09:20:41

标签: jenkins scope pipeline options

我需要使用必须在运行时定义的变量来动态设置选项锁。 锁必须引用只能在运行时评估的资源名称(从文件系统读取json属性)。 我尝试了一切都没有成功,有人能给我提些建议吗? 这是一个示例代码:

import groovy.transform.Field

 def TEST_VAR1 = "1"
 @Field def TEST_VAR2 = "2"
 GLB_TEST_VAR3 = "3"
 def JQTOOLS = "jnks-jq-1.6"
 
 pipeline {

    agent any 
    
    environment{ ENV_VAR1 = tool(name:"jnks-jq-1.6") }
    options { lock(resource:"LK_1_${JQTOOLS}_${TEST_VAR1}_${TEST_VAR2}_${GLB_TEST_VAR3}_${env.ENV_VAR1}") }
    stages {
        stage("S1") {
            steps {
                script{
                    echo "s1"
                    echo "${JQTOOLS}"
                    TEST_VAR1 = "a"
                    TEST_VAR2 = "b"
                    GLB_TEST_VAR3 = "c" 
                    env.NEW_VAR1 = "z"
                }
            }
        }
        stage("Nested"){
            environment{ ENV_VAR2=tool(name:"jnks-jq-1.6") }
            options{ lock(resource:"LK_2_${JQTOOLS}_${TEST_VAR1}_${TEST_VAR2}_${GLB_TEST_VAR3}_${env.ENV_VAR1}#${env.NEW_VAR1}")    }
            stages {
                stage("N1"){
                    steps{
                        echo "N1"
                        echo "${JQTOOLS}"
                        echo "${TEST_VAR1}"
                        echo "${TEST_VAR2}"
                        echo "${GLB_TEST_VAR3}"
                        echo "${env.NEW_VAR1}"
                    }
                }
            }
        }
    }
 }

这是管道日志:

Trying to acquire lock on [LK_1_jnks-jq-1.6_1_2_3_null]
Resource [LK_1_jnks-jq-1.6_1_2_3_null] did not exist. Created.
Lock acquired on [LK_1_jnks-jq-1.6_1_2_3_null]
[Pipeline] {
[Pipeline] stage
[Pipeline] { (S1)
[Pipeline] script
[Pipeline] {
[Pipeline] echo
s1
[Pipeline] echo
jnks-jq-1.6
Trying to acquire lock on **[LK_2_jnks-jq-1.6_1_2_3_null#null]**
Resource [LK_2_jnks-jq-1.6_1_2_3_null#null] did not exist. Created.
Lock acquired on [LK_2_jnks-jq-1.6_1_2_3_null#null]
[Pipeline] {
[Pipeline] tool
[jnks-jq-1.6] $ sh -e /var/lib/jenkins/tools/com.cloudbees.jenkins.plugins.customtools.CustomTool/jnks-jq-1.6/hudson7478700574940555782.sh
[Pipeline] withEnv
[Pipeline] {
[Pipeline] stage
[Pipeline] { (N1)
[Pipeline] echo
N1
[Pipeline] echo
jnks-jq-1.6
[Pipeline] echo
a
[Pipeline] echo
b
[Pipeline] echo
c
[Pipeline] echo
z

预期结果是正确评估变量...类似: LK_2_jnks-jq-1.6_a_b_c_jnks-jq-1.6#z

预先感谢

0 个答案:

没有答案
相关问题