2

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

4

2 回答 2

4

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

要在 Job DSL 生成的作业中使用密码,请使用Credentials 插件将密码(或任何机密)存储在 Jenkins 中。然后使用Credentials Binding 插件将密码映射到作业中的环境变量。查看 Job DSL wiki 以获取示例

于 2015-06-10T20:02:09.973 回答
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
            }
        }
    }
}
于 2015-06-19T17:06:19.180 回答