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

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:4分
  • スクリプト化された 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別に現在進行中のパイプライン実行がないことを確認します。パイプライン実行が処理されている場合、進行中のパイプライン実行に対してステップ実行が期待どおりに作成されないことがあります。パイプラインを再実行して、適切なステップ実行を作成します。