Jenkins Blue Ocean использует учетные данные в параметризованной сборке

У меня есть конвейерный проект в классическом 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.


person divby0    schedule 06.01.2020    source источник
comment
Blue Ocean — это просто другой графический интерфейс, и, похоже, в вашем Jenkinsfile нет блока parameters.   -  person Matt Schuchard    schedule 06.01.2020
comment
@MattSchuchard Мне не нужен был блок параметров в моем Jenkinsfile, когда я использовал Pipeline. Я использовал настройку параметризованной сборки в пользовательском интерфейсе, и я думаю, что это не отразилось в Jenkinsfile. Вы можете прояснить это для меня?   -  person divby0    schedule 06.01.2020
comment
Эта документация поможет: jenkins.io/doc/book/pipeline/syntax/#parameters   -  person Matt Schuchard    schedule 07.01.2020
comment
@MattSchuchard Спасибо, это почти то, что мне нужно - хотя мне нужно, чтобы пароль по умолчанию не читался в файле Jenkinsfile. Потому что этот файл будет частью проекта с открытым исходным кодом. Или как еще я могу настроить сборку через git push для использования значения, отличного от значения по умолчанию?   -  person divby0    schedule 07.01.2020
comment
Вы хотели бы изучить управление секретами и веб-хуки.   -  person Matt Schuchard    schedule 07.01.2020
comment
@MattSchuchard Большое спасибо :) Есть ли способ проголосовать за ваши комментарии или отдать должное?   -  person divby0    schedule 07.01.2020


Ответы (1)


Я просто хочу прояснить ситуацию, поэтому отвечаю на свой вопрос для всех, у кого такая же «проблема». Спасибо @Matt Schuchard за то, что он указал мне правильное направление:

Я уже знал, что секреты существуют, но неправильно использовал их в своем Jenkinsfile. Вместо использования переменной среды с параметризованной сборкой я использовал секрет напрямую по его идентификатору:

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. В конечном итоге мою проблему решило это краткое руководство.

person divby0    schedule 07.01.2020