我在经典的Jenkins中有一个管道项目,其中我使用了一个参数化的构建,其中包含一个秘密文件(带凭据的.env文件)。这可以很好地工作,但是当我使用Blue Ocean时,我没有用于参数化构建的相同选项。这是我当前使用的Jenkinsfile,它使用一个秘密文件(BOT_SECRET)在经典的Pipeline中工作:
pipeline {
agent any
stages {
stage("prepare .env") {
environment {
BOT_SECRET = credentials("${BOT_SECRET}")
}
steps {
sh "> .env"
sh "echo `cat $BOT_SECRET` > .env"
}
}
stage("build") {
steps {
sh "docker build -t telegram-bot ."
}
}
stage("deploy") {
steps {
sh "docker-compose up -d"
}
}
}
}我只找到了一个关于参数化构建的视频,但任何人都可以看到默认选项,并将其存储在Jenkinsfile中。
发布于 2020-01-08 01:59:48
我只是想把事情弄清楚,所以我会为那些有同样“问题”的人回答我自己的问题。感谢@Matt Schuchard为我指明了正确的方向:
我已经知道秘密的存在,但我在我的Jenkinsfile中错误地使用了它们。我没有使用参数化构建的环境变量,而是直接使用了Secret by it's ID:
pipeline {
agent any
stages {
stage('prepare .env') {
steps {
sh "> .env"
withCredentials([string(credentialsId: 'dice_master_env', variable: 'SECRET')]) {
sh "echo ${SECRET} > .env"
}
}
}
stage('build') {
steps {
sh 'docker build -t telegram-bot .'
}
}
stage('deploy') {
steps {
sh 'docker-compose up -d'
}
}
}
}现在,这个方法起作用了,而且凭据永远不会在git存储库中共享。最终是this short tutorial解决了我的问题。
https://stackoverflow.com/questions/59618341
复制相似问题