15

У Дженкинса 2 есть трубопроводы, есть первоклассный гражданин. Однако в примерах задачи, кажется, выполняются как одна последовательность:

node {
   // Mark the code checkout 'stage'....
   stage 'Checkout'

   // Get some code from a GitHub repository
   git url: 'git@github.com:elifesciences/elife-bot.git'

   // Mark the code build 'stage'....
   stage 'Build'
   echo "Unit tests will run here"

   stage "Production"
   echo "Deploying to production environment"
}

Для развертывания в производственной системе часто полезно требовать одобрения вручную; Есть ли способ вставить ручную кнопку для нажатия внутри конвейера?

Я искал возможные шаги для достижения этой цели в документах, но безрезультатно.

4 ответа4

14

Ввод - это опция, которую вы ищете. Вот способ, которым я использую это. Важно сделать шаг за пределы узла, иначе jenkins будет держать агента в ожидании следующего шага. Имейте в виду, что второй узел может не использовать то же рабочее пространство, что и первый.

node {
    stage('build'){
        echo "building"
    }
}
stage('Deploy approval'){
    input "Deploy to prod?"
}
node {
    stage('deploy to prod'){
        echo "deploying"
    }
}
0

Это простой пример, но вы можете запустить его так, как вам нужно.

stage{
    script{
        input "Continue?"
        ...enter code here
        ...
    }
}
0

Кроме того, вы также можете добавить автоматический тайм-аут, как показано ниже

        stage('build') {
        steps {
            sh  """
                # Some commands
                """
            script {
              timeout(time: 10, unit: 'MINUTES') {
                input(id: "Deploy Gate", message: "Deploy ${params.project_name}?", ok: 'Deploy')
              }
            }
        }
    }

    stage('deploy') {
        when {
            branch 'master'
        }
        steps {
            sh  """
                # some commands
                """
        }
    }

Если вы посмотрите его, вы также можете связать входные данные jenkins с учетными данными пользователей, обращающихся к Jenkins, только если вы хотите разрешить конкретным лицам отвечать на запросы - это также подтверждается тем фактом, что ваши элементы управления Git также достаточны.

0

В конце я создал отдельные конвейеры test-project и prod-project , где в конце test-project код объединяется в approved ветку.

Затем конвейер prod-project можно настроить так, чтобы он не запускался для каждого нового коммита, чтобы его можно было развернуть по требованию.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .