Azure DevOps リリースパイプラインの並列ステージ
リリースパイプラインの並列ステージが同時に処理され、DevOps パイプライン UI にリアルタイムで表示されるようになりました。ベースシステムの展開前条件とリリースゲートを使用すると、並列ステージの詳細を含む変更要求を作成できます。
Azure DevOps のベースシステムの並列ステージサポート
組織は並列ステージを使用して、並列で実行できるタスクのリリースプロセスを自動化および高速化します。たとえば、リリースパイプラインには複数のテストツールとソフトウェア品質ツールが統合されており、並行して実行するようにジョブが構成されています。各ジョブを順番に実行しない場合、リリースパイプラインの実行速度が大幅に向上します。
ServiceNow DevOps は、リリースパイプラインの並列ステージの処理をサポートし、DevOps パイプライン UI の並列ビューにステージを表示します。事実上、DevOps パイプライン UI は Azure DevOps GUI をリアルタイムで複製します。
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 変更要求を作成するための展開前条件のリリースゲート
- コミット
- 作業アイテム
- テストサマリー
- ソフトウェア品質サマリー
- アーティファクトバージョン
パイプライン実行が本番展開ステージに先行する並列ステージの処理を完了すると、変更要求が自動的に作成され、[パイプライン実行] ビューで本番展開ステージにマップされます。変更要求が承認されると、本番ステージの処理が完了します。
関連するパイプラインの [パイプライン実行] ビューから、[パイプライン UI] 関連リンクをクリックして、Azure DevOps に表示されるパイプラインのリアルタイムステータスを表示します。ビルドパイプラインから供給される関連するアーティファクトの詳細、テスト結果、ソフトウェア品質サマリー結果がパイプライン UI に表示されます。
パラレルジョブの作成順序の変更
Azure からのジョブ情報は、次の時間帯に ServiceNow で受信されます。
- ステージの完了時。
- register-change ステップが実行されるタイミング。
Azure は、ジョブが並列で実行されている可能性があるにもかかわらず、ジョブ キュー時間に基づいてジョブ情報を順番に提供します。したがって、以前にキューに入れられた並列ジョブが完了していない間に変更登録ステップが実行されると、システムは並列ジョブをアップストリームタスクと見なし、変更作成プロセスがその完了を待機します。ただし、ステージの完了通知は、登録変更ジョブを含むすべてのジョブが終了するまで受信されません。
これにより、ServiceNow の変更プロセスが並列ジョブの完了を待機し、並列ジョブがステージ完了通知を待機し、次に変更登録ジョブの完了を待機するというデッドロックシナリオが作成されます。
このデッドロックにより、変更が作成されるまでに Azure パイプライン ジョブは既に失敗しており、イベント API で 500 エラーが発生します。ジョブを再実行すると、以前にキューに入れられた並列ジョブが完了としてマークされるため、問題は解決します。
アップグレードに関する考慮事項
- 新規インストールの場合、[タスク実行] テーブルの [アップストリーム実行 (Upstream execution)] 列は表示されません。アップグレード前に [アップストリーム実行 (Upstream execution)] 列を使用して行ったカスタマイズは影響を受けません。
- ステージが並列で実行されている場合、変更要求はどのステージの最初のジョブでもなりません。
- アップグレード後、新しいリリースパイプラインの実行は並列ステージを同時に処理し、並列ステージと関連する詳細をパイプライン UI に表示します。アップグレード前に既に実行され、ServiceNow DevOps に保存されている Azure DevOps リリースパイプラインは影響を受けず、ServiceNow DevOps の並列ステージ (既に実行および永続化されている) を順次表示し続けます。
- 複数の開始ステージを持つリリースパイプラインの複数の開始ステージで展開前の ServiceNow DevOps リリースゲートが有効になっている場合、複数のパイプラインが実行される可能性があります。