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

Inject passwords to the build as environment variables

我正在尝试通过 'build environments' 部分中的选项在 jenkins 中设置密码,该选项可用于我的测试以获取密码并使用它。这是我正在检查的选项 "Inject passwords to the build as environment variables"。问题是一旦种子作业运行,我就会失去这些值。所以我的附加值在种子作业运行后消失了。有人遇到过这个问题吗?如何让它永久化以便每次我都可以在我的测试代码中检索这些密码?

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

要在作业 DSL 生成的作业中使用密码,请使用 Credentials plugin to store the password (or any secret) in Jenkins. Then use the Credentials Binding plugin to map the password to an environment variable in the job. Have a look at the Job DSL wiki for an example

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

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

注意:如果出现 "credentialsId did not found" 错误,您需要从 '*****/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
            }
        }
    }
}