0

我是jenkins dsl的新手。我正在尝试将凭据设置为环境变量,以便在我的 fabfile 中使用它。我首先确定要在步骤上下文中使用的凭据,而不是将其绑定到包装器块中。我的问题是包装块在步骤块之前执行,从而产生了一个找不到凭据的错误。我不确定如何以不同的方式设置值。有任何想法吗?添加了我的代码:

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')
}
4

1 回答 1

0

您的脚本中有两个问题。

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

2) 您设置的任何 shell 变量仅在 shell 步骤中可见。Shell 变量不会暴露给 Jenkins。

我认为这可以在不使用第一个 shell 步骤的情况下解决,但我不确定你想用那个 shell 步骤实现什么。也许您应该打开一个新问题并描述您要解决的高级问题。

于 2016-03-24T10:14:07.087 回答