Fases aninhadas e paralelas em Jenkins pipelines

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 3 min. de leitura
  • Use fases aninhadas e paralelas em pipelines com script Jenkins para acelerar a execução do pipeline. As solicitações de mudança são criadas para fases aninhadas e paralelas e não apenas para a fase primária.

    Suporte para fases aninhadas e paralelas em Jenkins pipelines

    Você pode usar fases aninhadas e paralelas em pipelines Jenkins com script para automatizar e acelerar tarefas que podem ser executadas em paralelo. Por exemplo, você tem um pipeline Jenkins com script com fases aninhadas e paralelas para vários casos de teste, como diferentes verificações de qualidade para diferentes sistemas operacionais e navegadores.

    ServiceNow DevOps oferece suporte ao processamento de fases paralelas e aninhadas em Jenkins pipelines e exibe o pipeline, na IU do pipeline DevOps. Com efeito, a IU do pipeline ServiceNow DevOps renderiza ou replica a IU do pipeline Jenkins em tempo real. Na exibição Execução de pipeline do pipeline relevante, clique no link relacionado à IU do pipeline para exibir o estado em tempo real do pipeline conforme ele aparece em Jenkins. Os detalhes do artefato associado que são originados do pipeline de compilação, Resultados de testes, Resultados do resumo de qualidade do software e Detalhes da solicitação de mudança são exibidos na IU do pipeline.
    Importante:
    O suporte para fases paralelas e aninhadas é restrito a pipelines com script em Jenkins. Os pipelines de estilo livre continuam a aparecer de maneira sequencial ou serial na IU do pipeline DevOps, mesmo que as fases paralelas e aninhadas façam parte dos pipelines de estilo livre em Jenkins.
    Figura 1. Pipeline do Jenkins com fases aninhadas ou paralelas
    Pipeline do Jenkins com fases aninhadas ou paralelas
    Amostra de pipeline com fases aninhadas ou paralelas
    pipeline {
        agent any
    
        stages {
            stage('Build') {
                steps { 
                    echo 'Building...'
                    // Your build steps here
                }
            }
    
            stage('Test') {
                parallel {
                    stage('Unit Tests') {
                        steps {
                            echo 'Running unit tests...'
                            // Your unit test steps here
                        }
                    }
                    stage('Integration Tests') {
                        steps {
                            echo 'Running integration tests...'
                            // Your integration test steps here
                        }
                    }
                    stage('Additional Tests') {
                        steps {
                            script {
                                parallel(
                                    'Nested Stage 1': {
                                        echo 'Running nested parallel stage 1...'
                                        // Your nested parallel stage 1 steps here
                                    },
                                    'Nested Stage 2': {
                                        echo 'Running nested parallel stage 2...'
                                        // Your nested parallel stage 2 steps here
                                    }
                                )
                            }
                        }
                    }
                }
            }
    
            stage('Deploy') {
                steps {
                    echo 'Deploying...'
                    snDevOpsChange changeRequestDetails: '{ "attributes": {"chg_model": "e55d0bfec343101035ae3f52c1d3ae49","standard_change_template"="563504cc47410200e90d87e8dee490e2"},"autoCloseChange": false}',changeStepTimeOut: 18000, pollingInterval: 60
                    // Your deploy steps here
                }
            }
        }
    }
    

    Solicitações de mudança em fases aninhadas e paralelas

    As solicitações de mudança são criadas para todas as fases aninhadas e paralelas, depois que todos os eventos ascendentes (anteriores à solicitação de mudança) são recebidos. Em versões anteriores, as fases aninhadas ou paralelas em Jenkins pipelines não eram identificadas nem processadas em ServiceNow DevOps. Somente fases primárias foram identificadas e processadas de maneira linear ou sequencial. Se houver solicitações de mudança como parte de fases aninhadas e paralelas, essas solicitações de mudança serão ignoradas e uma única solicitação de mudança será processada como parte da fase primária. Quando você executa um novo pipeline após o upgrade, novas etapas e execuções de etapas são criadas para fases aninhadas.

    As fases aninhadas e paralelas não eram processadas anteriormente e os grupos de aprovação eram mapeados somente para a fase primária. Como as fases aninhadas e paralelas são identificadas durante o processamento, você deve verificar se os grupos de aprovação relevantes estão mapeados para a fase aninhada ou paralela apropriada. Se as etapas subsequentes do pipeline dependerem da aprovação da solicitação de mudança, a execução do pipeline será pausada, e retomada quando a solicitação de mudança for aprovada.

    Considerações de upgrade

    Se você já estiver usando Jenkins com pipelines aninhados e paralelos como sua ferramenta de orquestração, considere o seguinte ao atualizar.
    • Faça upgrade fora dos horários de pico.
    • Certifique-se de que você não tenha execuções de pipeline em andamento no momento ServiceNow DevOps. Se as execuções de pipeline estiverem sendo processadas, as execuções de etapa poderão não ser criadas conforme o esperado para as execuções de pipeline em andamento. Execute novamente o pipeline para criar execuções de etapa apropriadas.