groovy - 如何从 groovy tp bash 中隐藏密码?
问题描述
stages {
stage('Get Clone ') {
steps {
sh """
./scripts/login_to_cf.sh -user ${params.USERNAME} -password ${params.PASSWORD} -
"""
}
}
}
当我调用脚本时,我可以看到密码。它如何被隐藏或保护?
解决方案
您应该使用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
推荐阅读
- visual-studio-code - nodemon "restarting due to changes..." repeatedly displays in VSCode and slows down every restarting process
- python - “user_id”列中的空值违反非空约束 Django 表单
- sqlite - SQLite 枢轴产生备用 NULLS
- sparql - Yasgui SPARQL 查询搜索 FOAF 名称不起作用
- sql - PostgresSQL 10.6 - 函数子字符串和 regexp_matches 函数不存在
- laravel - Guard.php 第 453 行中的 ErrorException
- ruby-on-rails - 如何为控制器创建 routes.rb 条目?
- ruby - Mongoid 和 Rspec 错误 Mongo::Error::NoServerAvailable:
- c++ - 赋值的计算序列,对于基本类型的变量,右操作数抛出异常
- excel - 基于过滤器范围的特殊粘贴错误 1004