如何从groovy TP bash隐藏密码?

时间:2019-02-13 13:55:50

标签: groovy jenkins-pipeline

stages {
    stage('Get Clone ') {
        steps {
     sh """

               ./scripts/login_to_cf.sh  -user ${params.USERNAME} -password ${params.PASSWORD} -           
            """         

            }
        }
    }

当我调用脚本时,可以看到密码。 如何隐藏或保护它?

1 个答案:

答案 0 :(得分:1)

您应该使用Jenkins Credentials Binding Plugin。首先,您需要添加凭据。为此,请转到您的Jenkins作业文件夹,然后点击左侧栏中的凭据。接下来,单击(全局)凭据域,然后单击添加凭据。选择带密码的用户名凭据类型,然后传递您的用户名密码

enter image description here

您可以将 ID 字段保留为空-Jenkins将在适当的位置生成UUID,因此,在添加它时,请转到凭据的 Edit 视图,以便您可以复制凭据ID

现在,您可以在文件夹中的Jenkins作业中使用此用户名和密码。在Jenkins管道中,您使用withCredentials()步骤来注入凭据。看一下以下示例管道:

pipeline {
    agent any 

    stages {
        stage("Test") {
            steps {
                withCredentials([usernamePassword(credentialsId: '2480f22e-52b4-40df-a6f4-ab346769d694', usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD')]) {
                    sh "echo --help -u $USERNAME -p $PASSWORD"
                }
            }
        }
    }
}

在此示例中,我使用 ID 2480f22e-52b4-40df-a6f4-ab346769d694注入凭据,并将用户名存储在USERNAME变量中,并将密码存储在PASSWORD变量中。使用withCredentials()的好处是,Jenkins会在控制台日志中使用****替换用户名和密码,因此您的密码不会随控制台日志泄漏。 (它只会影响控制台日志,并且您执行的命令会收到正确的凭据。)

[Pipeline] node
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test)
[Pipeline] withCredentials
[Pipeline] {
[Pipeline] sh
+ echo --help -u **** -p ****
--help -u **** -p ****
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Terminated
Finished: SUCCESS