Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins dsl-运行时确定绑定_Jenkins_Jenkins Job Dsl - Fatal编程技术网

Jenkins dsl-运行时确定绑定

Jenkins dsl-运行时确定绑定,jenkins,jenkins-job-dsl,Jenkins,Jenkins Job Dsl,我是詹金斯dsl的核心人物。 我正在尝试将凭据设置为环境变量,以便在我的文件中使用它。 我首先确定要在步骤上下文中使用的凭据, 然后将其绑定到包装块中。 我遇到的问题是,包装器块在步骤块之前执行,因此创建了一个找不到凭据的错误。 我不确定如何以不同的方式设置这些值。 有什么想法吗? 添加了我的代码: steps{ shell('if [ "$my-variable" == "new" ]; then\n\ cred="new"\n\ echo "set cred to new" \n\

我是詹金斯dsl的核心人物。 我正在尝试将凭据设置为环境变量,以便在我的文件中使用它。 我首先确定要在步骤上下文中使用的凭据, 然后将其绑定到包装块中。 我遇到的问题是,包装器块在步骤块之前执行,因此创建了一个找不到凭据的错误。 我不确定如何以不同的方式设置这些值。 有什么想法吗? 添加了我的代码:

steps{
    shell('if [ "$my-variable" == "new" ]; then\n\
cred="new"\n\
echo "set cred to new" \n\
else\n\
cred="old"\n\
echo "set cred to old"\n\
fi;')
}

wrappers{
    credentialsBinding{
        usernamePassword('userVar', 'passwordVar', '${cred}')
    }
}

steps {
    shell(fab ${envName} start')
}

您的脚本中有两个问题

1) 构建包装器在任何构建步骤之前运行。DSL允许以任何顺序定义步骤和包装,但作业将始终在步骤之前运行包装

2) 您设置的任何shell变量仅在shell步骤中可见。Shell变量不向Jenkins公开

我认为不使用第一个shell步骤就可以解决这个问题,但我不确定您使用该shell步骤想要实现什么。也许你应该提出一个新问题,描述一下你试图解决的高层次问题