Jenkins Blue Ocean使用参数化构建中的凭据

问题描述 投票:0回答:1

我在经典的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中。

jenkins jenkins-pipeline continuous-delivery jenkins-blueocean
1个回答
0
投票

我只想解决问题,所以我要为有相同“问题”的任何人回答我自己的问题。感谢@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解决了我的问题。

© www.soinside.com 2019 - 2024. All rights reserved.