Jenkins Pipeline 将密码参数传递给下游作业

Vla*_*adH 2 passwords parameters jenkins jenkins-pipeline

我想将一个值从 Jenkins Pipeline 作业中的密码参数插件传递到另一个自由式作业,以用于登录。我不想在输出或其他任何地方看到它。我可以在两个自由式工作之间完成它,但管道似乎有点不同。

即使我能够作为字符串发送,它也会在“参数”选项卡或“环境变量”选项卡中可见。

有谁知道如何实现这一点?

小智 5

我花了几个小时尝试不同的解决方案来解决与您遇到的同一问题,这是最终的解决方案,对我有用:

在您的管道脚本中:

stages {
    stage("Do something with credentials and pass them to the downstream job") {
        steps {
            build job: 'your/jobname/path', parameters: [
                [$class: 'hudson.model.PasswordParameterValue', name: 'PASSWORD', value: env.PASSWORD],
                [$class: 'TextParameterValue', name: 'USERNAME', value: env.USERNAME]
            ]
        }
    }
Run Code Online (Sandbox Code Playgroud)

技巧是在将密码参数传递给下游(自由式)作业时使用 hudson.model.PasswordParameterValue 类,但您必须在主管道(父作业)中使用相同的类进行参数定义才能使其正常工作。

例如,在您的管道作业中,您将配置密码参数:

configure {
        it / 'properties' / 'hudson.model.ParametersDefinitionProperty' / 'parameterDefinitions' << 'hudson.model.PasswordParameterDefinition' {
            name('PASSWORD')
            description('My password')
        }
}
Run Code Online (Sandbox Code Playgroud)