Existe uma maneira de inserir uma aprovação manual nos pipelines do Jenkins 2?

13

Jenkins 2 tem pipelines tem um cidadão de primeira classe. No entanto, nos exemplos, as tarefas parecem ser executadas como uma sequência única:

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

   // Get some code from a GitHub repository
   git url: '[email protected]:elifesciences/elife-bot.git'

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

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

Para implantação no sistema de produção, é geralmente útil exigir aprovação manual; Existe uma maneira de inserir um botão manual para pressionar dentro de um pipeline?

Eu tenho procurado por possíveis passos para conseguir isso em os documentos , sem sucesso.

    
por giorgiosironi 05.05.2016 / 16:48

3 respostas

11

input é a opção que você está procurando. Aqui está o jeito que eu estou usando. É importante ter o passo fora de um nó, caso contrário, os jenkins manterão um agente aguardando o próximo passo. Tenha em mente que o segundo nó não pode usar o mesmo espaço de trabalho que o primeiro.

node {
    stage('build'){
        echo "building"
    }
}
stage('Deploy approval'){
    input "Deploy to prod?"
}
node {
    stage('deploy to prod'){
        echo "deploying"
    }
}
    
por 17.02.2017 / 15:38
0

No final, criei os pipelines test-project e prod-project separados, em que no final de test-project o código é mesclado em uma ramificação approved .

Em seguida, o prod-project pipeline pode ser configurado para não ser acionado para cada novo commit, para que possa ser implantado sob demanda.

    
por 10.02.2017 / 18:18
0

Além disso, você também pode adicionar o tempo limite automático, como abaixo

        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
                """
        }
    }

Se você pesquisá-lo, você também pode vincular a entrada de senhas a credenciais de usuários que acessam o Jenkins se você quiser permitir que determinados indivíduos sejam capazes de responder - isso também é sustentado pelo fato de que seus controles do Git também são suficientes.

    
por 22.06.2018 / 11:48

Tags