将构建密码作为环境变量注入

时间:2015-06-10 18:31:12

标签: jenkins jenkins-plugins jenkins-job-dsl

我正在尝试通过“构建环境”部分中的选项在jenkins中设置密码,该部分可用于我的测试以获取密码并使用它。这是我正在检查“将构建密码作为环境变量注入”的选项。问题是,一旦种子作业运行,我将丢失这些值。因此,在种子作业运行后,我添加的值正在消失。有人遇到过这个问题吗?如何使它永久化,所以每次我可以在我的测试代码中检索那些pwds?

2 个答案:

答案 0 :(得分:4)

运行种子作业后,对生成的作业的所有手动更改都将丢失。这就是Job DSL插件的预期行为。

要在Job DSL生成的作业中使用密码,请使用Credentials plugin在Jenkins中存储密码(或任何密码)。然后使用Credentials Binding plugin将密码映射到作业中的环境变量。查看Job example的作业DSL维基。

答案 1 :(得分:1)

@daspilker,@ JesseGlick,非常感谢您的回复。它帮助我在Jenkins中编写了我的第一个配置块。提及我的行为以便面对同样问题的其他人可能有所帮助。

由于我们使用的是Job DSL 1.27,因此我无法直接使用凭证绑定。因此创建了一个配置块,并通过我的.groovy脚本注入了所需的变量。

注意:您需要获取' credentialsId'的转换值。来自' ***** / job / config.xml如果你得到" credentialsId没找到"错误。

static def credentialsBinding = { String userNameVar, String passwordVar, String credId, wrapperContext ->
    def nodeBuilder = new NodeBuilder()
    wrapperContext.wrapperNodes << nodeBuilder.'org.jenkinsci.plugins.credentialsbinding.impl.SecretBuildWrapper'(plugin: "credentials-binding@1.4") {
        bindings {
            'org.jenkinsci.plugins.credentialsbinding.impl.UsernamePasswordMultiBinding' {
                usernameVariable userNameVar
                passwordVariable passwordVar
                credentialsId credId
            }
        }
    }
}