翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
マルチアカウント DevOps 環境に GitHub フロー分岐戦略を実装する
作成者: Mike Stephens (AWS) と Abhilash Vinod (AWS)
環境:本稼働 | テクノロジー: DevOps; DevelopmentAndTesting; マルチアカウント戦略 | |
AWS サービス: AWS CodeArtifact、AWS CodeBuild、AWS CodeCommit、AWS CodeDeploy、AWS CodePipeline |
[概要]
ソースコードリポジトリを管理する場合、さまざまな分岐戦略が、開発チームが使用するソフトウェア開発およびリリースプロセスに影響します。一般的な分岐戦略の例には、Trunk、 GitHub Flow、Gitflow などがあります。これらの戦略では異なるブランチが使用され、各環境で実行されるアクティビティは異なります。 DevOps プロセスを実装している組織は、ビジュアルガイドを活用して、これらの分岐戦略の違いを理解することができます。このビジュアルを組織で使用すると、開発チームが作業を整合させ、組織の標準に従うのに役立ちます。このパターンは、このビジュアルを提供し、組織に GitHub フロー分岐戦略を実装するプロセスを説明します。
このパターンは、複数の を持つ組織の DevOps 分岐戦略の選択と実装に関するドキュメントシリーズの一部です AWS アカウント。このシリーズは、クラウドでのエクスペリエンスを効率化するために、最初から正しい戦略とベストプラクティスを適用するのに役立つように設計されています。 GitHub Flow は、組織が使用できる分岐戦略の 1 つにすぎません。このドキュメントシリーズでは、Trunk および Gitflow 分岐モデルについても説明します。まだ行っていない場合は、このパターンのガイダンスを実装する前に、マルチアカウント DevOps 環境の Git 分岐戦略の選択を確認することをお勧めします。組織に適した分岐戦略を選択するには、デューデリジェンスを使用してください。
このガイドでは、組織が GitHub フロー戦略をどのように実装するかを示す図を示します。AWS Well-Architected DevOps ガイダンスを確認して、ベストプラクティスを確認することをお勧めします。このパターンには、 DevOps プロセスの各ステップで推奨されるタスク、ステップ、制限が含まれます。
前提条件と制限
前提条件
アーキテクチャ
ターゲット アーキテクチャ
次の図は、Punnett 四角形 (Wikipedia) feature
ブランチから本番稼働環境へのデプロイを行います。
GitHub フローアプローチの AWS アカウント、環境、ブランチの詳細については、「マルチアカウント DevOps 環境の Git 分岐戦略の選択」を参照してください。
自動化とスケール
継続的インテグレーションと継続的デリバリー (CI/CD) は、ソフトウェアリリースのライフサイクルを自動化するプロセスです。これにより、本番環境への最初のコミットから新しいコードを取得するために従来必要とされていた手動プロセスの多くまたはすべてを自動化できます。CI/CD パイプラインには、サンドボックス、開発、テスト、ステージング、本番環境が含まれます。各環境では、CI/CD パイプラインはコードをデプロイまたはテストするために必要なインフラストラクチャをプロビジョニングします。CI/CD を使用すると、開発チームはコードを変更し、自動的にテストおよびデプロイできます。CI/CD パイプラインは、機能の受け入れとデプロイに一貫性、標準、ベストプラクティス、最小限の承認レベルを適用することで、開発チームのガバナンスとガードレールも提供します。詳細については、「 での継続的インテグレーションと継続的デリバリーの実践 AWS」を参照してください。
AWS は、CI/CD パイプラインの構築に役立つように設計されたデベロッパーサービスのスイートを提供します。例えば、 AWS CodePipelineは、リリースパイプラインを自動化して、アプリケーションとインフラストラクチャを迅速かつ確実に更新できるようにするフルマネージド型の継続的デリバリーサービスです。 AWS CodeCommitは、スケーラブルな Git リポジトリを安全にホストし、ソースコードをAWS CodeBuildコンパイルしてテストを実行し、 ready-to-deploy ソフトウェアパッケージを生成します。詳細については、「 のデベロッパーツール AWS
ツール
AWS サービスとツール
AWS は、このパターンの実装に使用できる一連のデベロッパーサービスを提供します。
AWS CodeArtifact は、アプリケーション開発用のソフトウェアパッケージの保存と共有に役立つ、高度にスケーラブルなマネージドアーティファクトリポジトリサービスです。
AWS CodeBuild は、ソースコードをコンパイルし、ユニットテストを実行し、すぐにデプロイできるアーティファクトを生成するのに役立つフルマネージド型のビルドサービスです。
AWS CodeCommit は、独自のソース管理システムを管理することなく、Git リポジトリをプライベートに保存および管理できるようにするバージョン管理サービスです。
AWS CodeDeploy は、Amazon Elastic Compute Cloud (Amazon EC2)、オンプレミスインスタンス、 AWS Lambda 関数、または Amazon Elastic Container Service (Amazon ECS) サービスへのデプロイを自動化します。
AWS CodePipeline は、ソフトウェアリリースのさまざまな段階を迅速にモデル化して設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化するのに役立ちます。
その他のツール
Draw.io Desktop
は、フローチャートと図を作成するためのアプリケーションです。コードリポジトリには、Draw.io の .drawio 形式のテンプレートが含まれています。 ™ma
は、コラボレーション用に設計されたオンライン設計ツールです。コードリポジトリには、Gemema 用の .fig 形式のテンプレートが含まれています。
コードリポジトリ
このパターンの図のソースファイルは、 GitHub Git Branching Strategy for GitHub Flow
ベストプラクティス
AWS Well-Architected DevOps ガイダンスのベストプラクティスと推奨事項に従い、マルチアカウント DevOps 環境の Git 分岐戦略を選択します。これらは、 GitHub フローベースの開発を効果的に実装し、コラボレーションを促進し、コード品質を向上させ、開発プロセスを合理化するのに役立ちます。
エピック
タスク | 説明 | 必要なスキル |
---|---|---|
標準の GitHub フロープロセスを確認します。 |
| DevOps エンジニア |
バグ修正 GitHub フロープロセスを確認します。 |
| DevOps エンジニア |
ホットフィックス GitHub フロープロセスを確認します。 | GitHub フローは、コードの変更が頻繁に、確実に上位の環境にデプロイされる継続的な配信を可能にするように設計されています。重要なのは、すべての
| DevOps エンジニア |
トラブルシューティング
問題 | ソリューション |
---|---|
ブランチの競合 | GitHub フローモデルで発生する可能性がある一般的な問題は、ホットフィックスを本番環境で発生させる必要があるが、同じリソースが変更されている |
チーム成熟度 | GitHub フローは、真の継続的インテグレーションと継続的デリバリー (CI/CD) を採用して、より高い環境への毎日のデプロイを促進します。機能を構築し、自動化テストを作成するには、チームがエンジニアリングの成熟度を持っていることが不可欠です。チームは、変更が承認される前に、完全なマージリクエストのレビューを実行する必要があります。これにより、開発プロセスの品質、説明責任、効率を高める強固なエンジニアリング文化が促進されます。 |
関連リソース
このガイドには Git のトレーニングは含まれていませんが、このトレーニングが必要な場合は、インターネットで利用できる高品質のリソースが多数あります。Git ドキュメント
以下のリソースは、 での GitHub フロー分岐ジャーニーに役立ちます AWS クラウド。
AWS DevOps ガイダンス
GitHub フローガイダンス
GitHub フロークイックスタートチュートリアル
(GitHub)
その他のリソース
12 要素のアプリ方法
論 (12factor.net)