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

时间:2017-09-07 12:01:33

标签: jenkins parameters passwords jenkins-pipeline

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

即使我能够以字符串形式发送,它也会在“参数”选项卡或“环境变量”选项卡中显示。

有谁知道如何实现这一目标?

4 个答案:

答案 0 :(得分:2)

我花了好几个小时为同样的问题尝试不同的解决方案,这是最终的解决方案,对我有用:

在您的管道脚本中:

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]
            ]
        }
    }

诀窍是在将password参数传递给下游(Freestyle)作业时使用hudson.model.PasswordParameterValue类,但是必须在主管道(父作业)中使用相同的类进行参数定义才能使其工作

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

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

答案 1 :(得分:1)

您应该使用凭据插件,在您使用withCredentials块写入的管道中。例如:

withCredentials([usernamePassword(credentialsId: 'abcd1234-56ef-494f-a4d9-d5b5e8ac357d',
                    usernameVariable: 'USERNAME',
                    passwordVariable: 'PASSWORD')])
                {
                    echo 'username='+USERNAME
                    echo 'password='+PASSWORD
                }

其中abcd1234-56ef-494f-a4d9-d5b5e8ac357d是您在jenkins中拥有的凭据的ID,当然,只要您不回显变量(正如我在示例中所做的那样显然是为了演示目的),用户名和密码是不可见。

答案 2 :(得分:1)

您应确保父作业和子作业都使用密码参数。然后,此参数选项卡将掩盖您的密码。将构建参数设置为密码参数不会在环境变量选项卡中屏蔽密码,因为您需要在子作业和父作业配置中启用掩码密码,或者使用为构建作为环境变量注入密码并启用掩码密码。

答案 3 :(得分:0)

您可以借助以下插件触发下游作业 Parameterized+Trigger+Plugin

相关问题