承認ゲートによる本番環境へのデプロイ
GitHub Actionsの環境保護ルール、手動承認、デプロイゲートを使い、ステージングから本番環境へ安全にビルドを昇格させる方法を学びます。
「承認ゲートによる本番環境へのデプロイ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン4/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
本番環境にゲートが必要な理由
継続的デプロイではコードを自動的にリリースできますが、チェックポイントなしでproductionに直接反映するのは危険です。不適切なリリースによって、すべてのユーザーが瞬時に影響を受ける可能性があります。
承認ゲートとは、人間または自動チェックがデプロイを進めてよいことを確認するための、意図的な一時停止です。
- ミスによる影響範囲を縮小します
- 誰が何を承認したかの監査証跡を作成します
stagingとproductionで信頼度のレベルを分けられます
GitHub Environments
GitHub Actions にはEnvironmentsという機能があります。productionのような環境には、独自のシークレット、変数、保護ルールを設定できます。
ジョブから環境を参照するには、environmentキーを使用します。これが承認ゲートを追加する基盤になります。
jobs:
deploy:
runs-on: ubuntu-latest
environment: production
steps:
- run: echo 'Deploying to production'必須レビュアー
リポジトリの設定で、Settings > Environments > productionの順に移動すると、Required reviewersを有効にできます。
ジョブがその環境を対象にすると、ワークフローの実行は一時停止し、一覧にあるレビュアーのいずれかがApproveをクリックするまで待機します。
- 最大 6 人のレビュアーを設定できます
- デフォルトでは、1 人の承認でジョブのブロックが解除されます
- 設定によっては、承認者を実行のトリガーとなったユーザーにすることはできません
完全なゲート付きワークフロー
ここでは、まずbuildジョブが実行され、その後、deployジョブがneedsを介してそれに依存し、保護されたproduction環境を対象にします。
Actions UI で必須レビュアーが承認するまで、デプロイは開始されません。
name: Deploy
on:
push:
branches: [main]
jobs:
build:
runs-on: ubuntu-latest
steps:
- run: echo 'build artifact'
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: production
url: https://myapp.example.com
steps:
- run: echo 'deploy to prod'待機タイマー
環境ではレビュアーに加えて、待機タイマーもサポートされています。これにより、デプロイを進める前に最大 30 日間の遅延を設定できます。
短い待機タイマーは安全のためのクールダウンとして役立ちます。本番環境に到達する前に、実行をキャンセルする時間をチームに与えられるためです。
デプロイ可能なブランチの制限
環境では、デプロイを許可するブランチを制限できます。productionでは通常、main(またはリリースタグ)のみを許可します。
これにより、フィーチャーブランチから誤って本番環境にデプロイするのを防げます。
- 保護されたブランチ — 保護ルールが設定されたブランチのみ
- 選択したブランチ — 明示的な許可リストまたはタグパターン
環境スコープのシークレット
各環境には独自のシークレットがあります。production環境にはPROD_DB_URLを、staging環境にはSTAGING_DB_URLを保持できます。
環境で定義したシークレットは、その環境を対象とするジョブでのみ利用できるため、分離性がさらに高まります。
steps:
- name: Deploy
env:
DB_URL: ${{ secrets.PROD_DB_URL }}
run: ./deploy.shデプロイステータスの追跡
環境にurlを設定すると、GitHub UI のデプロイにクリック可能なリンクが追加され、Deployments API を介してデプロイオブジェクトが記録されます。
これにより、どのコミットがいつ、誰によって本番環境に反映されたかを確認できる履歴が得られます。
environment:
name: production
url: https://myapp.example.com保留中の実行の承認
ゲート付きのジョブが待機している場合、ワークフローの実行ページに黄色のReview deploymentsバナーが表示されます。
- Actionsタブで実行を開きます
Review deploymentsをクリックします- 環境を選択し、
Approve and deployまたはRejectをクリックします
判断の理由を説明するコメントを残すこともできます。
複数のゲートの組み合わせ
最も強固な本番環境のゲートは、複数のルールを組み合わせたものです。
- 必須レビュアー(人による承認)
- 待機タイマー(クールダウン)
- ブランチ制限(
mainのみ) - 環境シークレット(分離)
これらを重ねることで、staging から production への堅牢な昇格プロセスを構築できます。
ゲートを安全に回避する方法
緊急のホットフィックスが必要になる場合もあります。保護ルールを削除するのではなく、独自のログ記録とより厳格なレビュアーを設定した、範囲を限定したホットフィックスワークフローを別に用意することを検討してください。
利便性のためにゲートを恒久的に無効化してはいけません。それでは安全機構の目的が失われます。
クイックチェック
本番環境の承認ゲートについての理解度を確認します。
まとめ
GitHub Environments を使って、本番環境へのデプロイに承認ゲートを追加する方法を学びました。
environmentキーを使って保護された環境を対象にします- 必須レビュアーによって人による承認を追加します
- 待機タイマーによってクールダウン時間を追加します
- ブランチ制限と環境シークレットによって分離性を高めます
これらのゲートを組み合わせることで、staging から production への昇格を安全かつ監査可能にできます。
よくある質問
「承認ゲートによる本番環境へのデプロイ」レッスンは無料ですか?
はい。「承認ゲートによる本番環境へのデプロイ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「承認ゲートによる本番環境へのデプロイ」で何を学びますか?
GitHub Actionsの環境保護ルール、手動承認、デプロイゲートを使い、ステージングから本番環境へ安全にビルドを昇格させる方法を学びます。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン4/4です。
「承認ゲートによる本番環境へのデプロイ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Continuous Deployment 入門
- ステージング環境へのデプロイ
- 環境変数とシークレット
- 承認ゲートによる本番環境へのデプロイ