Azure DevOpsリリースパイプラインの並列ステージ

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:6分
  • リリースパイプラインの並列ステージ が同時に処理され、 DevOps パイプライン UI にリアルタイムで表示されるようになりました。ベースシステムの展開前条件とリリースゲートを使用すると、並列ステージの詳細を含む変更要求を作成できます。

    のベースシステムの並列ステージのサポート Azure DevOps

    組織は並列ステージを使用して、並列で実行できるタスクのリリースプロセスを自動化および迅速化します。たとえば、リリースパイプラインには複数のテストツールとソフトウェア品質ツールが統合されており、ジョブが並列で実行されるように構成されています。各ジョブを順番に実行しないと、リリースパイプラインの実行が大幅に高速化されます。

    ServiceNow DevOps は、リリースパイプラインの並列ステージの処理をサポートし、 DevOps パイプライン UI の並列ビューにステージを表示します。事実上、 DevOps パイプライン UI は Azure DevOps GUI をリアルタイムで複製します。

    パイプライン UI で処理されたステージの詳細を確認することもできます。
    重要:
    並列ステージのサポートは、リリース パイプラインに制限されています。ビルド パイプラインは、Azure DevOps でビルド パイプラインに並列ステージが構成されている場合でも、DevOps パイプライン UI に順次または連続的に引き続き表示されます。
    図 : 1. 並列ステージを備えた ADO パイプライン
    並列ステージを備えた ADO パイプライン
    並列ステージを使用したサンプル ADO パイプライン
    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 変更要求を作成するための展開前条件でのリリースゲート

    ベースシステム ServiceNow DevOpsリリースゲートが展開前の条件とともに追加されます。Now Platformインスタンスを呼び出すように構成されたベースシステムの展開ゲートを有効にし、本番展開ステージの前に変更要求を作成します。変更要求は、前の (アップストリーム) ステージのすべての処理が完了した後に作成されるようになりました。変更要求は、すべての上流ステージから関連する詳細をキャプチャし、次の対応する関連リストに表示します。
    • コミット
    • 作業アイテム
    • テストサマリー
    • ソフトウェア数量サマリー
    • アーティファクトバージョン

    パイプライン実行が本番展開ステージに先行する並列ステージの処理を完了すると、変更要求が自動的に作成され、[パイプライン実行] ビューの本番展開ステージにマッピングされます。変更要求が承認されると、本番ステージの処理が完了します。

    関連するパイプラインの [パイプライン実行 ] ビューで、[ パイプライン UI ] 関連リンクをクリックして、 Azure DevOps に表示されるパイプラインのリアルタイムステータスを表示します。ビルドパイプラインから供給される関連するアーティファクトの詳細、テスト結果、ソフトウェア品質サマリー結果がパイプライン UI に表示されます。

    並列ジョブの変更作成順序

    Azure からのジョブ情報は、次の時間に ServiceNow で受信されます。

    1. ステージの完了時。
    2. レジスタ変更ステップが実行されるタイミング。

    Azure は、ジョブが並列で実行されている可能性があるにもかかわらず、ジョブキュー時間に基づいてジョブ情報を順番に提供します。したがって、前にキューに入れられた並列ジョブが未完了のままである間にレジスタ変更ステップが実行されると、システムはその並列ジョブをアップストリーム・タスクと見なし、変更作成プロセスはその完了を待ちます。ただし、登録変更ジョブを含むすべてのジョブが完了するまで、ステージ完了通知は受信されません。

    これにより、ServiceNow の変更プロセスが並列ジョブの完了を待機するのに対し、並列ジョブはステージ完了通知を待機し、ステージは登録変更ジョブの完了を待機するというデッドロックシナリオが発生します。

    このデッドロックにより、変更が作成されるまでに、Azure パイプライン ジョブは既に失敗しており、イベント API で 500 エラーが発生します。ジョブを再実行すると、以前にキューに入れられた並列ジョブが完了としてマークされるため、問題が解決します。

    アップグレードに関する考慮事項

    アップグレードする前に、次の考慮事項を確認してください。
    重要:
    変更要求は、並列ジョブを含むステージには存在できません。
    • 新規インストールの場合、[タスク実行] テーブルの [ アップストリーム実行 ] 列は表示されません。アップグレード前に [上流の実行 ] 列を使用して行ったカスタマイズは影響を受けません。
    • ステージが並列で実行されている場合、変更要求をいずれかのステージの最初のジョブにすることはできません。
    • アップグレード後、新しいリリースパイプラインの実行は並列ステージを同時に処理し、並列ステージと関連する詳細をパイプライン UI に表示します。アップグレード前に既に実行され、ServiceNow DevOpsに格納されているAzure DevOpsリリースパイプラインは影響を受けず、ServiceNow DevOpsで並列ステージ (既に実行および保持されている) を連続して表示し続けます。
    • 複数の開始ステージを持つリリース パイプラインの複数の開始ステージでデプロイ前の ServiceNow DevOps リリース ゲートが有効になっている場合、パイプラインが複数回実行される可能性があります。
    注:
    パッケージは開始ステージごとに作成されますが、パイプラインの実行ごとに 1 つのパッケージが関連付けられます。