我在经典的Jenkins中有一个管道项目,在这里我使用带有秘密文件(带有凭据的.env文件)的参数化Build。这可以正常工作,但是当我使用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 Schuchard指出正确的方向:
我已经知道秘密存在,但是我在Jenkinsfile中确实以错误的方式使用了它们。我没有通过参数化的构建使用环境变量,而是直接使用Secret的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解决了我的问题。