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

问题描述

我需要使用必须在运行时定义的变量来动态设置选项锁。 锁必须引用只能在运行时评估的资源名称(从文件系统读取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

预先感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...