Jenkins Blue Ocean использует учетные данные в параметризованной сборке - PullRequest
0 голосов
/ 06 января 2020

У меня есть конвейерный проект в классе c Jenkins, где я использую параметризованную сборку с секретным файлом (файл .env с учетными данными). Это работает нормально, но когда я использую Blue Ocean, у меня нет тех же параметров для параметризованной сборки. Это текущий Jenkinsfile, который я использую, который работает в classi c Конвейер с секретным файлом (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.

1 Ответ

0 голосов
/ 07 января 2020

Я просто хочу прояснить ситуацию, поэтому отвечаю на свой вопрос для тех, у кого такая же "проблема". Кредит go @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. В конечном счете, это это короткое руководство решило мою проблему.

...