Cartoon gears and neon rolling marbles rolling through a track

GitHub Actions での自動化デプロイ保護ルール上級

Bekah Whittle
Bekah Whittle // Director, Field Services // GitHub

このガイドでは、スケーラブルなデプロイに GitHub Actions を使用する方法を説明します。異なる環境間でデプロイする方法と、さらに高度なニーズに対して GitHub Marketplace を使用する方法を示します。目標は、デプロイ戦略を成長させて、ビジネスに適応できるようにすることです。そのために、Itaú Unibanco と TELUS が銀行のビジネスを前進させるのに役立ててきたデプロイ パラメーターを共有します。


このガイドの学習内容

  • デプロイ保護ルールを設定してデプロイを保護する方法

  • workflow_dispatch を使用してデプロイを手動で制御する方法

  • deployment_outputs を使用してデプロイ後の重要なデータを取得する方法


GitHub Actions で自動デプロイ保護ルールを設定する

デプロイ保護ルールは重要な安全装置として機能し、デプロイが安全かつ正確に実行されるようにします。デプロイ保護ルールはチェックポイントの役割を果たし、全てのデプロイがベスト プラクティスや企業固有の基準を遵守していることを確認します。以下はルールの詳細な説明です。

必須レビュー担当者

デプロイをレビューし、承認する特定のチーム メンバーを指定します。これにより、検証レイヤーを追加し、変更を企業の標準に確実に適合させることができます。たとえば、シニア開発者の承認がなければデプロイを本番環境で実施できないようにするなどです。

待機タイマー

デプロイ アクションの前に一定の待機期間を設けます。これは、重要度の高いデプロイでは極めて重要です。チームはデプロイ前に再確認を行ったり、オフピークの時間帯まで待ってデプロイを実施したりできるため、混乱を最小限に抑えられます。

カスタム ルール

組織に合わせてカスタム ルールを作成したり、サードパーティ アプリを使用したりできます。たとえば、サーバーの負荷が特定の閾値に達していないことをデプロイ前に確認したり、既存のアプリを使用して同様の機能を組み込んだりできます。

ブランチ デプロイの管理

デプロイの対象となるブランチを指定します。これにより、成熟度が高く、テストされ安定したコードのみがデプロイされるように徹底できます。たとえば、release-* という名前のブランチのみデプロイを許可することで、デプロイできるコードに明確性と一貫性を持たせます。

認証情報の保護は、安全なデプロイのための最も影響力のある対策のひとつです。 物理的なワークスペースを保護するようなものだと考えてください。その場合、付箋にパスワードを書いたままにしておき、誰もが見られる状態にしておくことはありません。同様に、ソース コードに極秘情報を保存すれば、コードにアクセスできる人なら誰でもその情報を見ることができます。当社では、必要なときに簡単に取り消したり入れ替えたりできるように、一般的に使用する認証情報は組織シークレットを使用して処理しています。開発チームは特定のリポジトリに関連付けられた極秘データにはリポジトリ シークレットを使用し、そのリポジトリへのアクセス権限を持つ者だけがアクセスできるようにしています。

Abigail Climacosa
Abigail Climacosa // Software Engineer // TELUS

デプロイ パラメーターを検証する

ソフトウェアを効率的かつ正確にデプロイするには、実行前にデプロイ パラメーターを検証することが極めて重要です。矛盾や誤りを初めに特定することで、トラブルシューティングによる時間の浪費を回避し、デプロイを正確で信頼できるデータに基づき進めることができます。この予防的な措置は、デプロイ パイプラインの一貫性を保つだけでなく、システム全体の信頼性も高めます。

Itaú では、Actions を使用することによって早期に問題をチェックできることがわかりました。 Actions を使用した問題のチェックは、開発者が新機能に着手するときに行っています。これらのチェックを事前に行うことで、後での遅延やデプロイの失敗などの問題を回避できます。最初の段階から全てが正しく設定されていることを確認できる Actions は非常に便利です。

Gabriel Galeazzi
Gabriel Galeazzi // IT Engineering Specialist // Itaú Unibanco

workflow_dispatch

GitHub Actions の workflow_dispatch イベントを使用すると、開発者はデプロイをより詳細に手動制御できます。GitHubs のインターフェイスからワークフローの実行を手動でトリガーし、よりインタラクティブかつ柔軟にデプロイのニーズに対応できます。 

GitHub Actions の workflow_dispatchを活用することで、特定のデプロイ パラメーターを GitHub UI に直接入力できます。たとえば、アプリ コンテナー イメージ、アプリ タイプ、アプリ名などのパラメーターを簡単に設定できます。これにより、その場で柔軟に調整を行えるだけでなく、意図したとおりのコンテンツがデプロイされるように徹底できます。

deployment_outputs

deployment_outputs GitHub Actions でデプロイを実行した後に、重要なデータを取得します。プラン名、環境名、コンテナー イメージ、レジストリ ログインなどの主要な情報を、deployment_outputs.jsonのような構造化された出力ファイルに格納します。デプロイ後の重要な情報に簡単にアクセスできるため、後続のステップや検証が合理化されます。

マーケットプレイスを活用してデプロイを強化する

GitHub Actions Marketplace は、デプロイを合理化・最適化するために設計されたアクションを多数提供する強力なツールです。GitHub Actions Marketplace を検索すると、Azure などのプラットフォームへのデプロイから、カナリア デプロイやブルーグリーン デプロイなど細かな条件を伴うプロセスまで、特定のデプロイ ニーズを満たすアクションが簡単に見つかります。たとえば、マーケットプレイスで「Azure」や「デプロイ」を検索するだけで、AKS クラスターの作成やその他 Azure 固有のタスクなど、さまざまなアクションが表示されます。こうした事前構築済みのアクションを利用することで、デプロイ プロセスを大幅に簡素化し、デプロイ フローをよりスムーズでより効率的なものにできます。

GitHub Marketplace は CI/CD パイプラインを強化し、業界のベスト プラクティスを短期間で採用するための優れたリソースです。 コンテナー イメージにセキュリティ スキャンを追加する方法を探していたときに Marketplace を検索したところ、この作業に対応できる 5 つのオプションがすぐに見つかりました。

Gabriel Galeazzi
Gabriel Galeazzi // IT Engineering Specialist // Itaú Unibanco

次のガイド: 中級の自動化モジュールのまとめ

学んだことを一つにまとめる準備はできましたか? GitHub Actions の中級の使い方のラーニング パスのまとめもぜひお読みください。