spring-boot - 如何在 Jenkins Step 中设置秘密
问题描述
我正在寻找一种仅在 Jenkins 步骤中注入秘密的解决方案:
应用程序属性:
spring.datasource.username=mySecretValue
spring.datasource.password=mySecretValue
...
当前状态:
stage('Test') {
agent {
docker {
image 'myregistry.com/maven:3-alpine'
reuseNode true
}
}
steps {
configFileProvider([configFile(fileId: 'maven-settings-my-services', variable: 'MAVEN_SETTINGS')]) {
sh 'mvn -s $MAVEN_SETTINGS verify'
}
}
...
谢谢!
解决方案
选项 1)为该密钥添加密码作业参数。但这项工作必须手动运行,因为需要有人输入密码。
// write the secret to application.property at any stage that
// prior to test and deployment stage
sh "echo spring.datasource.password=${params.DB_PASSWORD} >> application.property"
选项 2) 将密钥添加为 Jenkins 字符串文本凭据。但是添加凭证需要 Jenkins 管理员访问权限,并且还需要考虑将来更新。
stage('test or deployment') {
environment {
DB_PASSWORD = credentials('<credential_id_of_the_secret>')
}
steps {
sh "echo spring.datasource.password=${env.DB_PASSWORD} >> application.property"
}
}
推荐阅读
- javascript - 我们如何在 AJAX 请求中将元素 ID 作为变量传递?
- ssms - 从新查询启动编辑前 200 名
- c# - C# Zxing 中的 QRCodeWriter 创建二维码图像
- sum - 对列表的项求和,直到达到某个条件
- python - 使用 python SET 操作的单词列表中的对称对
- javascript - Rect.setGradient 不是 fabricjs 中的函数
- themes - 如何删除内置的 Visual Studio Code Color 主题
- archlinux - /usr/lib/libblkid.so.1:找不到版本 BLKID_2_37
- regex - 具有连续五位数字和任何字母的字符串数据的正则表达式
- javascript - Angular中setTimeOut的单元测试