我在经典的 Jenkins 中有一个管道项目,我使用了一个参数化的构建,其中包含一个秘密文件(带有凭据的 .env 文件(。这工作正常,但是当我使用 Blue Ocean 时,我没有相同的参数化构建选项。这是我使用的当前Jenkinsfile
,它在经典管道中使用秘密文件 (BOT_SECRET(:
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
中。
我只是想澄清事情,所以我正在为任何有相同"问题"的人回答我自己的问题。感谢@Matt舒查德为我指明了正确的方向:
我已经知道秘密的存在,但我确实在我的 Jenkinsfile 中以错误的方式使用了它们。我没有使用具有参数化构建的环境变量,而是直接通过其 ID 使用了 Secret:
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 存储库中共享凭据。最终,正是这个简短的教程解决了我的问题。