首页 > 解决方案 > 如何从 groovy tp bash 中隐藏密码?

问题描述

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

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

            }
        }
    }

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

标签: groovyjenkins-pipeline

解决方案


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

在此处输入图像描述

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

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

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

推荐阅读