Geschachtelte und parallele Phasen in JenkinsPipelines

  • Freigeben Version: Yokohama
  • Aktualisiert 30. Januar 2025
  • 2 Minuten Lesedauer
  • Verwenden Sie geschachtelte und parallele Phasen in geskriptet JenkinsPipelines, um Ihre Pipeline-Ausführung zu beschleunigen. Change-Anforderungen werden für geschachtelte und parallele Phasen und nicht nur für die übergeordnete Phase erstellt.

    Unterstützung für geschachtelte und parallele Phasen in JenkinsPipelines

    Sie können geschachtelte und parallele Phasen in geskriptet verwenden JenkinsPipelines zur Automatisierung und Beschleunigung von Aufgaben, die parallel ausgeführt werden können. Sie haben beispielsweise geskriptet JenkinsPipeline mit geschachtelten und parallelen Phasen für verschiedene Testfälle, z. B. verschiedene Qualitätsprüfungen für verschiedene Betriebssysteme und Browser.

    ServiceNow DevOpsUnterstützt die Verarbeitung paralleler und geschachtelter Phasen in JenkinsPipelines und zeigt die Pipeline in an DevOpsPipeline-UI. In Kraft ist ServiceNow DevOpsPipeline-UI rendert oder repliziert JenkinsPipeline-UI in Echtzeit. Von Pipeline-Ausführung Ansicht der relevanten Pipeline, klicken Sie auf Pipeline-UI Zugehöriger Link zum Anzeigen des Echtzeitstatus der Pipeline, wie sie in angezeigt wird Jenkins. Die zugehörigen Artefaktdetails, die aus der Build-Pipeline, den Testergebnissen, den Zusammenfassungsergebnissen der Softwarequalität und den Details der Change-Anforderung stammen, werden auf der Pipeline-UI angezeigt.
    Wichtig:
    Die Unterstützung für parallele und geschachtelte Phasen ist auf geskriptete Pipelines in beschränkt Jenkins. FreeStyle-Pipelines werden weiterhin sequenziell oder seriell in angezeigt DevOpsPipeline-UI, auch wenn parallele und geschachtelte Phasen Teil von Freestyle-Pipelines in sind Jenkins.
    Abbildung : 1. Jenkins-Pipeline mit geschachtelten oder parallelen Phasen
    Jenkins-Pipeline mit geschachtelten oder parallelen Phasen
    Beispiel-Pipeline mit geschachtelten oder parallelen Phasen
    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
                }
            }
        }
    }
    

    Change-Anforderungen in geschachtelten und parallelen Phasen

    Change-Anforderungen werden für alle geschachtelten und parallelen Phasen erstellt, sobald alle vorgelagerten Ereignisse (vor der Change-Anforderung) empfangen wurden. In vorherigen Releases geschachtelte oder parallele Phasen in JenkinsPipelines wurden in nicht identifiziert oder verarbeitet ServiceNow DevOps. Nur übergeordnete Phasen wurden identifiziert und linear oder sequenziell verarbeitet. Wenn Change-Anforderungen als Teil einer geschachtelten und parallelen Phase vorhanden waren, wurden diese Change-Anforderungen ignoriert, und eine einzelne Change-Anforderung wurde als Teil der übergeordneten Phase verarbeitet. Wenn Sie nach dem Upgrade eine neue Pipeline ausführen, werden neue Schritte und Schrittausführungen für geschachtelte Phasen erstellt.

    Geschachtelte und parallele Phasen wurden zuvor nicht verarbeitet, und Genehmigungsgruppen wurden nur der übergeordneten Phase zugeordnet. Da verschachtelte und parallele Phasen während der Verarbeitung identifiziert werden, müssen Sie sicherstellen, dass relevante Genehmigungsgruppen der entsprechenden geschachtelten oder parallelen Phase zugeordnet sind. Wenn nachfolgende Schritte der Pipeline davon abhängen, dass die Change-Anforderung genehmigt wird, wird die Pipeline-Ausführung angehalten. Und fortgesetzt, wenn die Change-Anforderung genehmigt wird.

    Upgrade-Überlegungen

    Wenn Sie bereits verwenden JenkinsWenn Sie geschachtelte und parallele Pipelines als Orchestration-Tool verwenden, berücksichtigen Sie beim Upgrade Folgendes.
    • Upgrade außerhalb der Spitzenzeiten.
    • Stellen Sie sicher, dass Sie keine Pipeline-Ausführungen haben, die derzeit von ausgeführt werden ServiceNow DevOps. Wenn Pipeline-Ausführungen verarbeitet werden, werden Schrittausführungen möglicherweise nicht wie für die laufenden Pipeline-Ausführungen erwartet erstellt. Führen Sie die Pipeline erneut aus, um entsprechende Schrittausführungen zu erstellen.