デプロイメントゲートの概念
Azure DevOps Services | Azure DevOps Server 2022 - Azure DevOps Server 2019
続行する前に、デプロイが特定の条件を満たしていることを確認するために、Azure Pipelines のデプロイ ゲートがリリース パイプラインに追加されます。 ゲートは、より安定した安全なソフトウェア リリースにつながる厳格なチェックを実施することで、デプロイの信頼性と安全性を確保するために不可欠です。
ゲートは、リリース ステージのデプロイ前およびデプロイ後の条件で定義されます。 Azure 関数や REST API などの外部サービスから正常性シグナルを自動的に収集し、これらのシグナルに基づいてリリースの昇格を制御するメカニズムを提供します。 ゲートは承認と連携して、適切な関係者がリリースを承認し、リリースが必要な品質とコンプライアンスの基準を満たしていることを確認します。
ユース ケース
デプロイ ゲートの一般的なユース ケースを次に示します。
- インシデント管理: デプロイを続行する前に、特定の条件が満たされていることを確認します。 たとえば、優先度 0 のバグが存在しない場合にのみデプロイが行われるようにします。
- 承認を求める: Microsoft Teamsや Slack と統合して、監査者や IT マネージャーなどの外部ユーザーに展開について通知し、承認を待ちます。
- 品質検証: 合格率やコード カバレッジなどのパイプライン メトリックをクエリし、定義済みのしきい値内にある場合にのみデプロイします。
- セキュリティ スキャン: アーティファクトのスキャン、コード署名、ポリシー チェックなどのセキュリティ チェックを実行します。 デプロイ ゲートによってスキャンが開始され、スキャンが完了するのを待つ場合や、完了を確認する場合があります。
- ベースラインに関連するユーザー エクスペリエンス: 製品データ収集を使用して、ベースライン状態からのユーザー エクスペリエンスの回帰を確認します。 デプロイ前のユーザー エクスペリエンス メトリックをベースラインとして使用できます。
- 変更管理: ServiceNow などのシステムの変更管理手順が完了するまで待ってから、デプロイに進みます。
- インフラストラクチャの正常性: デプロイ後に監視を実行し、コンプライアンス規則に対してインフラストラクチャを検証するか、正常なリソース使用率と肯定的なセキュリティ レポートを待ちます。
ほとんどの正常性パラメーターは時間の経過と同時に変化し、定期的に状態が正常から異常に変わり、正常に戻ります。 このようなバリエーションを考慮するために、すべてのゲートが同時に成功するまで、すべてのゲートが定期的に再評価されます。 すべてのゲートが同じ間隔で、構成されたタイムアウトの前に成功しない場合、リリースの実行とデプロイは続行されません。
ステージのゲートを定義する
ゲートは、ステージの開始時 (デプロイ前の条件) またはステージの終了時 (デプロイ後の条件) または両方に対して有効にすることができます。 詳細については、「ゲート設定方法」を参照してください。
評価前の遅延は、ゲート評価プロセスの開始時の時間遅延であり、ゲートの初期化、安定、現在のデプロイの正確な結果が得られます。 詳細については、「ゲート評価フロー」を参照してください。
- デプロイ前ゲート の場合、遅延は、デプロイ中の成果物に対してすべてのバグをログに記録するために必要な時間になります。
- デプロイ後ゲート
場合、デプロイされたアプリが安定した運用状態に達するまでの最大時間、デプロイされたステージで必要なすべてのテストの実行にかかる時間、デプロイ後にインシデントがログに記録されるまでの時間が遅延します。
既定では、次のゲートを使用できます。
- Azure 関数を呼び出す: Azure 関数の実行をトリガーし、正常に完了したことを確認します。 詳細については、Azure 関数タスクの
に関するページを参照してください。 - Azure mMnitor アラートのクエリ: アクティブなアラートの構成済みの Azure Monitor アラート ルールを確認します。 詳細については、Azure monitor タスク
に関するページを参照してください。 - REST APIを呼び出す: REST API を呼び出し、正常な応答が返された場合は続行します。 詳細については、「REST API タスク
呼び出す」を参照してください。 - クエリ作業項目: クエリから返される一致する作業項目の数がしきい値内にあることを確認します。 詳細については、「作業項目のクエリタスク 」を参照してください。
- Azure Policy コンプライアンスのを確認する: 特定のサブスクリプションとリソース グループのスコープ内のリソースに対する Azure Policy コンプライアンスを評価します。必要に応じて、特定のリソース レベルで評価します。 詳細については、「Azure Policy コンプライアンス タスクのを確認する」を参照してください。
Marketplace 拡張機能を使用して独自のゲートを作成することもできます。
すべてのゲートに適用される評価オプションは次のとおりです。
- ゲートの再評価の間の所要時間。 ゲートの連続チェック間の時間間隔。 サンプリング間隔ごとに、新しい要求が各ゲートに同時に送信され、新しい結果が評価されます。 サンプリング間隔が構成されたゲートの最も長い一般的な応答時間よりも長く、評価のためにすべての応答を受信できる時間を許容することをお勧めします。
- ゲートが失敗するまでのタイムアウト。 すべてのゲートに対する評価期間の最大値。 すべてのゲートが同じサンプリング間隔で成功する前にタイムアウトに達すると、デプロイは拒否されます。
- ゲートと承認。 ゲートと承認の両方を構成した場合は、必要な実行順序を選択します。 デプロイ前の条件では、既定では、最初に手動 (ユーザー) の承認を求め、その後ゲートを評価し、ユーザーがリリースを拒否した場合にシステムがゲート関数を評価しないようにします。 デプロイ後の条件では、既定では、ゲートを評価し、すべてのゲートが成功した場合にのみ手動承認を求め、承認者がリリースを承認するために必要なすべての情報を持っていることを確認します。
ゲート分析の詳細については、「
ゲート評価フローの例
次の図は、初期安定化遅延期間と 3 つのサンプリング間隔の後にデプロイが承認されるゲート評価のフローを示しています。
次の図は、初期安定化遅延期間の後、すべてのゲートが各サンプリング間隔で成功したわけではないゲート評価のフローを示しています。 この場合、タイムアウト期間が経過すると、デプロイは拒否されます。