Jenkins パイプライン内のネストされたステージと並列ステージ

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:5分
  • スクリプト化された Jenkins パイプラインでネストされたステージと並列ステージを使用して、パイプラインの実行を高速化します。変更要求は、親ステージだけでなく、ネストされた並列ステージに対しても作成されます。

    Jenkins パイプラインでのネストされたステージと並列ステージのサポート

    スクリプト化された Jenkins パイプラインでネストされたステージと並列ステージを使用して、並列で実行できるタスクを自動化および高速化できます。たとえば、さまざまなオペレーティングシステムやブラウザーに対するさまざまな品質チェックなど、さまざまなテストケースのネストされた並列ステージを持つスクリプト化された Jenkins パイプラインがあるとします。

    ServiceNow DevOps は、Jenkins パイプラインでの並列ステージとネストされたステージの処理をサポートし、DevOps パイプライン UI にパイプラインを表示します。実際には、ServiceNow DevOps パイプライン UI は、Jenkins パイプライン UI をリアルタイムでレンダリングまたはレプリケートします。関連するパイプラインの [パイプライン実行] ビューから、[パイプライン UI] 関連リンクをクリックして、Jenkins に表示されるパイプラインのリアルタイムステータスを表示します。ビルドパイプライン、テスト結果、ソフトウェア品質サマリー結果、および変更要求の詳細から供給された関連するアーティファクトの詳細がパイプライン UI に表示されます。
    重要:
    並列ステージとネストされたステージのサポートは、Jenkins のスクリプト化されたパイプラインに制限されています。フリースタイルパイプラインは、並列ステージと入れ子になったステージが Jenkins のフリースタイルパイプラインの一部である場合でも、DevOps パイプライン UI に順次または直列の方法で引き続き表示されます。
    図 : 1. ネストされたステージまたは並列ステージがある Jenkins パイプライン
    ネストされたステージまたは並列ステージがある Jenkins パイプライン
    ネストされたステージまたは並列ステージがあるパイプラインの例
    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
                }
            }
        }
    }
    

    ネストされたステージおよび並列ステージの変更要求

    変更要求は、(変更要求の前に) すべてのアップストリームイベントが受信されると、ネストされたすべての並列ステージに対して作成されます。以前のリリースでは、Jenkins パイプライン内のネストされたステージまたは並列ステージは識別されず、ServiceNow DevOps で処理されませんでした。親ステージのみが特定され、線形または順次的に処理されました。ネストされたステージおよび並列ステージの一部として変更要求が存在する場合、それらの変更要求は無視され、単一の変更要求が親ステージの一部として処理されました。アップグレード後に新しいパイプラインを実行すると、ネストされたステージに対して新しいステップとステップ実行が作成されます。

    ネストされたステージと並列ステージは以前は処理されておらず、承認グループは親ステージにのみマップされていました。ネストされたステージと並列ステージは処理中に識別されるため、関連する承認グループが適切なネストされたステージまたは並列ステージにマップされていることを確認する必要があります。パイプラインの後続のステップが変更要求の承認に依存している場合、パイプラインの実行は一時停止され、変更要求が承認されると再開されます。

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

    ネストされたパイプラインと並列パイプラインを含む Jenkins をオーケストレーションツールとして既に使用している場合は、アップグレード時に次の点を考慮してください。
    • ピーク時間外にアップグレードしてください。
    • ServiceNow DevOps によって現在進行中のパイプライン実行がないことを確認します。パイプライン実行が処理されている場合、進行中のパイプライン実行に対してステップ実行が期待どおりに作成されない可能性があります。パイプラインを再実行して、適切なステップ実行を作成します。