A品質ゲート品質ゲートとは、作業が次のステップに進む前に通過しなければならないチェックです。ゲートを設けることで、「出荷可能な水準」という判断が主観的なものではなく、システムが毎回同じように強制するルールへと変わります。
ブロッキングとアドバイザリー
すべてのゲートはこのいずれかであり、その違いこそが設計の核心です。
- ブロッキング— チェックに失敗すると作業は停止します。条件を満たすか、人間が上書き承認するまで作業は先に進みません。
- アドバイザリー— 失敗は検知結果として記録され、プルリクエストに添付されますが、作業は続行されます。
まずはアドバイザリーとして設定しましょう。実際の作業でゲートが何を検知するかを1〜2週間観察し、条件を満たしたものをブロッキングに昇格させてください。初期段階で何も調整せずにブロッキングを設定すると、ほとんどの場合、開発者がそれを回避する方法を編み出してしまいます。
ブロッキングゲート
- カバレッジが80%未満失敗
タスクが停止します
拒否されるだけのpull requestを作成する代わりに、手直しとして差し戻されます。
- 権限を持つ者が上書きできます。上書きした者、時刻、理由が記録されます。
アドバイザリーゲート
- カバレッジが80%未満失敗
事象が記録されます
タスクはレビューを通過して続行します。
- その事象はpull requestに添付され、あなたが判断できるようになります。
ゲートでチェックできる項目
ゲートは検証ステージの上に位置し、以下の項目をカバーできます:
- 自社のテストスイートが正常に完了すること
- カバレッジの閾値
- リンティングおよび静的解析
- セキュリティスキャン(設定場所はセキュリティ
- 稼働中のプレビュー環境でのブラウザテスト
- pull requestに添付される外部プロバイダーからの証拠
最も有用なゲートはほとんどの場合、既存のテストスイートです。なぜなら、チームが重要と判断した事項がすでに反映されているからです。
ゲートが作業を停止させるタイミング
ゲートは検証中に実行され、開発エージェントの作業が終了した後、レビュー前に適用されます。ブロッキングで失敗すると、作業は再実行対象として戻され、却下されるだけのpull requestが生成されるのを防ぎます。
この順序は意図的なものです。実行中に失敗する方が、画面で失敗するよりもコストが低いからです。
ポリシー
ゲートは「ポリシー」にグループ化されますポリシー、これが実際にプロジェクトに適用されるものです。ポリシーとは、ブロッキング/アドバイザリーの設定を含むゲートの名付けられた集合であり、本番サービス向けの標準ポリシーや内部ツール向けの簡易ポリシーを設定できます。
ポリシーにはバージョン管理がされています。変更を公開した後、新しいゲートが厳しすぎると判断された場合には、以前のバージョンにロールバックできます。
上書き承認
ブロッキングゲートは、権限を持つ人間が上書き承認できます。その履歴(誰が、いつ、何に対して行ったか)は記録されます。
この記録こそが重要なのです。上書き承認が不可能なゲートは回避手段が生まれ、誰でも簡単に上書きできるゲートはゲートとは言えません。履歴が残る上書き承認であれば、実用性と説明責任を両立できます。
ゲートが行わないこと
ゲートは属性をチェックします。作業が正しい問題を解決しているかどうかは判断しません。それは仕様に定められた受入基準や、レビューの役割です。
すべてのゲートを通過しても、間違った変更である可能性があります。