Parallele Phasen in Azure DevOps Release-Pipelines

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 4 Minuten Lesedauer
  • Parallele Phasen in einer Release-Pipeline Werden jetzt gleichzeitig verarbeitet und in angezeigt DevOps Pipeline-UI in Echtzeit. Mit Bedingungen vor der Bereitstellung des Basissystems und Release-Gates können Sie Change-Anforderungen erstellen, die Details aus parallelen Phasen enthalten.

    Unterstützung der parallelen Phase des Basissystems für Azure DevOps

    Organisationen verwenden parallele Phasen, um Release-Prozesse für Aufgaben zu automatisieren und zu beschleunigen, die parallel ausgeführt werden können. Zum Beispiel verfügt eine Release-Pipeline über mehrere Test- und Softwarequalitätstools und hat Aufgaben, die so konfiguriert sind, dass sie parallel ausgeführt werden. Wenn nicht jeder Auftrag sequenziell ausgeführt wird, wird die Ausführung der Release-Pipeline erheblich beschleunigt.

    ServiceNow DevOps Unterstützt die Verarbeitung paralleler Phasen in Release-Pipelines und zeigt die Phasen in einer parallelen Ansicht in an DevOps Pipeline-UI. Effektiv, die DevOps Die Pipeline-UI repliziert Azure DevOps GUI in Echtzeit.

    Sie können die Details der verarbeiteten Phasen auch in der Pipeline-UI anzeigen.
    Wichtig:
    Die Unterstützung paralleler Phasen ist auf Release-Pipelines beschränkt. Build-Pipelines werden weiterhin sequenziell oder seriell in angezeigt DevOps Pipeline-UI, auch wenn parallele Phasen für Build-Pipelines in konfiguriert sind Azure DevOps.
    Abbildung : 1. ADO-Pipeline mit parallelen Phasen
    ADO-Pipeline mit parallelen Phasen
    Beispiel für eine ADO-Pipeline mit 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
                }
            }
        }
    }
    

    ServiceNow® DevOps Release-Gate in Bedingungen vor der Bereitstellung, um Change-Anforderungen zu erstellen

    A Basissystem ServiceNow DevOps Release Gate wird zusammen mit Bedingungen vor der Bereitstellung hinzugefügt. Aktivieren Sie die Bereitstellungs-Gates des Basissystems, die für den Aufruf von konfiguriert sind ServiceNow AI Platform Instanz zum Erstellen einer Change-Anforderung vor der Phase „Bereitstellung in der Produktion“. Change-Anforderungen werden jetzt erstellt, nachdem alle vorherigen (vorgelagerten) Phasen die Verarbeitung abgeschlossen haben. Die Change-Anforderung erfasst relevante Details aus allen vorgelagerten Phasen und zeigt sie in den folgenden zugehörigen Listen an.
    • Commits
    • Arbeitselemente
    • Testzusammenfassungen
    • Softwarequalitätszusammenfassung
    • Artefaktversionen

    Nachdem die Pipeline-Ausführung die Verarbeitung der parallelen Phasen vor der Phase der Produktionsbereitstellung abgeschlossen hat, wird automatisch eine Change-Anforderung erstellt und der Phase „Bereitstellung in Produktion“ in der Ansicht „Pipeline-Ausführungen“ zugeordnet. Die Produktionsphase schließt die Verarbeitung ab, sobald die Change-Anforderung genehmigt wurde.

    Von Pipeline-Ausführung Klicken Sie in der Ansicht der relevanten Pipeline auf Pipeline-UI Zugehöriger Link zum Anzeigen des Echtzeitstatus der Pipeline, wie sie in angezeigt wird Azure DevOps. Die zugehörigen Artefaktdetails, die aus der Build-Pipeline, den Testergebnissen und den Zusammenfassungsergebnissen der Softwarequalität stammen, werden auf der Pipeline-UI angezeigt.

    Ändern Sie die Erstellungssequenz für parallele Aufträge

    Auftragsinformationen von Azure werden in ServiceNow während der folgenden Zeiten empfangen:

    1. Nach Abschluss einer Phase.
    2. Wenn der Schritt „Registrieren-Change“ ausgeführt wird.

    Azure stellt Auftragsinformationen sequenziell basierend auf der Zeit der Auftragswarteschlange bereit, obwohl Aufträge potenziell parallel ausgeführt werden. Wenn daher der Schritt „Change registrieren“ ausgeführt wird, während ein paralleler Auftrag in der Warteschlange nicht abgeschlossen ist, geht das System davon aus, dass der parallele Auftrag eine vorgelagerte Aufgabe ist, wodurch der Change-Erstellungsprozess auf seinen Abschluss wartet. Benachrichtigungen zum Phasenabschluss werden jedoch erst empfangen, wenn alle Aufträge abgeschlossen sind, einschließlich des Auftrags „Registrieren/Ändern“.

    Dadurch wird ein Stillstandsszenario erstellt, in dem der Change-Prozess in ServiceNow auf den Abschluss des parallelen Auftrags wartet, während der parallele Auftrag auf die Benachrichtigung über den Phasenabschluss wartet, die wiederum auf den Abschluss des Auftrags „Registrieren-Change“ wartet.

    Aufgrund dieses Deadlocks ist der Azure-Pipeline-Auftrag zum Zeitpunkt der Erstellung des Change bereits fehlgeschlagen, was zum Fehler 500 in der Ereignis-API führte. Durch das erneute Ausführen des Auftrags wird das Problem gelöst, da die zuvor in der Warteschlange gestellten parallelen Aufträge als abgeschlossen markiert werden.

    Überlegungen Zum Upgrade

    Stellen Sie sicher, dass Sie die folgenden Überlegungen vor dem Upgrade überprüfen.
    Wichtig:
    Eine Change-Anforderung darf in einer Phase, die parallele Aufträge enthält, nicht vorhanden sein.
    • Die Vorgelagerte Ausführung Die Spalte in der Tabelle „Aufgabenausführungen“ wird für neue Installationen nicht angezeigt. Alle Anpassungen, die Sie mit vorgenommen haben Vorgelagerte Ausführung Spalten vor dem Upgrade sind nicht betroffen.
    • Wenn Phasen parallel ausgeführt werden, darf eine Change-Anforderung nicht der erste Auftrag in einer Phase sein.
    • Nach dem Upgrade verarbeiten neue Releasepipelineausführungen parallele Phasen gleichzeitig und zeigen parallele Phasen und zugehörige Details in der Pipeline-UI an. Azure DevOps Release-Pipelines, die bereits in ausgeführt und gespeichert wurden ServiceNow DevOps Bleiben Sie vor dem Upgrade nicht betroffen, und zeigen Sie weiterhin parallele Phasen (die bereits ausgeführt und beibehalten wurden) in an ServiceNow DevOps Seriell.
    • Wenn die vor der Bereitstellung ServiceNow DevOps Das Release-Gate ist in mehr als einer Startphase in einer Release-Pipeline mit mehreren Startphasen aktiviert. Dies kann zu mehreren Pipeline-Ausführungen führen.
    Hinweis:
    Für jede Startphase wird ein Paket erstellt, pro Pipeline-Ausführung wird jedoch ein Paket zugeordnet.