

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# マルチアカウント DevOps 環境に Gitflow ブランチ戦略を実装する
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments"></a>

*Amazon Web Services、Mike Stephens、Stephen DiCato、Abhilash Vinod、Tim Wondergem*

## 概要
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-summary"></a>

ソースコードリポジトリを管理する場合、さまざまなブランチ戦略が、開発チームが使用するソフトウェア開発およびリリースプロセスに影響します。一般的なブランチ戦略の例としては、トランク、Gitflow、GitHub フローなどがあります。これらの戦略では異なるブランチが使用され、各環境で実行されるアクティビティは異なります。DevOps プロセスを実装している組織は、ビジュアルガイドを活用して、これらの分岐戦略の違いを理解できます。組織でこのビジュアルを使用すると、開発チームが作業を調整し、組織の標準に従うのに役立ちます。このパターンでは、このビジュアルを提供し、組織に Gitflow ブランチ戦略を実装するプロセスについて説明します。

このパターンは、複数の を持つ組織の DevOps ブランチ戦略の選択と実装に関するドキュメントシリーズの一部です AWS アカウント。このシリーズは、クラウドでのエクスペリエンスを効率化するために、最初から正しい戦略とベストプラクティスを適用するのに役立つように設計されています。Gitflow は、組織で使用できるブランチ戦略の 1 つです。このドキュメントシリーズでは、[トランク](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-trunk-branching-strategy-for-multi-account-devops-environments.html)および [GitHub フロー](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/implement-a-github-flow-branching-strategy-for-multi-account-devops-environments.html)ブランチモデルについても説明します。まだ確認していない場合は、このパターンのガイダンスを実装する前に、「[Choosing a Git branching strategy for multi-account DevOps environments](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)」を確認することをお勧めします。デューデリジェンスを使用して、組織に適したブランチ戦略を選択してください。

このガイドでは、組織が Gitflow 戦略を実装する方法を記した図を示します。「[AWS Well-Architected DevOps Guidance](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)」でベストプラクティスを確認することをお勧めします。このパターンには、DevOps プロセスの各段階に推奨されるタスク、ステップ、制限が含まれます。

## 前提条件と制限事項
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-prereqs"></a>

**前提条件**
+ 「[インストール済み](https://git-scm.com/downloads)」Git これはソースコードリポジトリツールとして使用されます。
+ Draw.io が[インストールされていること](https://github.com/jgraph/drawio-desktop/releases)。このアプリケーションは、図の表示や編集のために使用されます。
+ (オプション) Gitflow プラグインが[インストールされていること](https://github.com/nvie/gitflow)。

## アーキテクチャ
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-architecture"></a>

**ターゲットアーキテクチャ**

次の図は、[パネットスクエア](https://en.wikipedia.org/wiki/Punnett_square) (Wikipedia) のように使用できます。垂直軸のブランチを水平軸の AWS 環境と並べて、各シナリオで実行するアクションを決定します。数字は、ワークフロー内のアクションのシーケンスを示します。この例では、feature ブランチから本番環境へのデプロイまでを示します。

![各ブランチと環境での Gitflow アクティビティのパネットスクエア。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/1dee2a06-cc54-4797-b9a9-78b6685edd33/images/d8be49bf-dca1-4892-ac4c-11996a7258c2.png)


Gitflow アプローチの AWS アカウント、環境、ブランチの詳細については、[「マルチアカウント DevOps 環境の Git ブランチ戦略の選択](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)」を参照してください。

**自動化とスケール**

継続的インテグレーションと継続的デリバリー (CI/CD) は、ソフトウェアリリースライフサイクルを自動化するプロセスです。CI/CD は、初期コミットから本番環境に新しいコードを移行するために従来必要とされていた手動プロセスの多く、またはすべてを自動化します。CI/CD パイプラインには、サンドボックス、開発、テスト、ステージング、および本番環境が含まれます。各環境で、CI/CD パイプラインはコードをデプロイまたはテストするために必要なインフラストラクチャをプロビジョニングします。CI/CD を使用することで、開発チームはコードを変更し、自動的にテストとデプロイを行うことができます。CI/CD パイプラインは、機能の受け入れとデプロイに一貫性、標準、ベストプラクティス、最小限の承認レベルを適用することで、開発チームのガバナンスとガードレールも提供します。詳細については、「[AWSでの継続的インテグレーションと継続的デリバリーの実践](https://docs.aws.amazon.com/whitepapers/latest/practicing-continuous-integration-continuous-delivery/welcome.html)」を参照してください。

AWS は、CI/CD パイプラインの構築を支援するように設計されたデベロッパーサービスのスイートを提供します。例えば、[AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) は完全マネージド型の継続的デリバリーサービスであり、リリースパイプラインを自動化して、迅速かつ信頼性の高いアプリケーションとインフラストラクチャの更新を実現します。[AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) はソースコードをコンパイルし、テストを実行し、すぐにデプロイできるソフトウェアパッケージを生成します。詳細については、[「Developer Tools on AWS](https://aws.amazon.com/products/developer-tools/)」を参照してください。

## ツール
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-tools"></a>

**AWS サービスとツール**

AWS は、このパターンの実装に使用できる一連の開発者サービスを提供します。
+ スケーラビリティが高く、フルマネージド型のアーティファクトリポジトリサービスである [AWS CodeArtifact](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html) を使用すると、アプリケーション開発に使用するソフトウェアパッケージを保存および共有できます。
+ [AWS CodeBuild](https://docs.aws.amazon.com/codebuild/latest/userguide/welcome.html) は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。
+ [AWS CodeDeploy](https://docs.aws.amazon.com/codedeploy/latest/userguide/welcome.html) は、Amazon Elastic Compute Cloud (Amazon EC2)、オンプレミスインスタンス、 AWS Lambda 関数、または Amazon Elastic Container Service (Amazon ECS) サービスへのデプロイを自動化します。
+ [AWS CodePipeline](https://docs.aws.amazon.com/codepipeline/latest/userguide/welcome.html) は、ソフトウェアリリースのさまざまな段階を迅速にモデル化および設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化するのに役立ちます。

**その他のツール**
+ [Draw.io Desktop](https://github.com/jgraph/drawio-desktop/releases) は、フローチャートと図を作成するためのアプリケーションです。コードリポジトリには、Draw.io 用の .drawio 形式のテンプレートが格納されています。
+ [Figma](https://www.figma.com/design-overview/) は、コラボレーション用に設計されたオンライン設計ツールです。コードリポジトリには、Figma 用の .fig 形式のテンプレートが格納されています。
+ (オプション) [Gitflow プラグイン](https://github.com/nvie/gitflow)は、Gitflow ブランチモデルの高レベルのリポジトリオペレーションを提供する Git 拡張機能のコレクションです。

**コードリポジトリ**

このパターンにおける図のソースファイルは、[Git Branching Strategy for GitFlow](https://github.com/awslabs/git-branching-strategies-for-multiaccount-devops/tree/main/gitflow) GitHub リポジトリで入手できます。ここには、PNG、draw.io、および Figma 形式のファイルが含まれます。これらの図は、組織のプロセスに対応するように変更できます。

## ベストプラクティス
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-best-practices"></a>

「[AWS Well-Architected DevOps Guidance](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)」と「[Choosing a Git branching strategy for multi-account DevOps environments](https://docs.aws.amazon.com/prescriptive-guidance/latest/choosing-git-branch-approach/)」のベストプラクティスと推奨事項に従ってください。これらは、Gitflow ベースの開発を効果的に実装し、コラボレーションを促進し、コード品質を高め、開発プロセスを合理化するのに役立ちます。

## エピック
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-epics"></a>

### Gitflow ワークフローの確認
<a name="reviewing-the-gitflow-workflows"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| 標準の Gitflow プロセスを確認します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps エンジニア | 
| ホットフィックス Gitflow プロセスを確認します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps エンジニア | 
| バグ修正 Gitflow プロセスを確認します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/implement-a-gitflow-branching-strategy-for-multi-account-devops-environments.html) | DevOps エンジニア | 

## トラブルシューティング
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-troubleshooting"></a>


| 問題 | ソリューション | 
| --- | --- | 
| ブランチの競合 | Gitflow モデルで発生する可能性がある一般的な問題は、ホットフィックスを本番環境に適用する必要がある場合に、別のブランチによって同じリソースが変更されている下位環境でもそれに対応する変更を適用する必要があるという状況です。有効にする release ブランチは一度に 1 つだけにすることをお勧めします。複数のブランチが同時に有効になっている場合、環境内での変更が衝突し、ブランチを本番環境に移行できない可能性があります。 | 
| マージ | リリースをメインにマージし、できるだけ早く開発して、作業をプライマリブランチに統合する必要があります。 | 
| スカッシュマージ | スカッシュマージは、`feature` ブランチから `develop` ブランチにマージする場合にのみ使用します。上位のブランチでスカッシュマージを使用すると、変更を下位のブランチに戻してマージする際に問題が発生します。 | 

## 関連リソース
<a name="implement-a-gitflow-branching-strategy-for-multi-account-devops-environments-resources"></a>

このガイドには Git のトレーニングは含まれていませんが、このトレーニングが必要な場合は、インターネット上で多くの高品質のリソースを入手できます。[Git ドキュメント](https://git-scm.com/doc)のサイトから始めることをお勧めします。

以下のリソースは、 AWS クラウドで Gitflow ブランチを利用する際に役立ちます。

**AWS DevOps ガイダンス**
+ [AWS DevOps ガイダンス](https://docs.aws.amazon.com/wellarchitected/latest/devops-guidance/devops-guidance.html)
+ [AWS デプロイパイプラインリファレンスアーキテクチャ](https://pipelines.devops.aws.dev/)
+ [DevOps とは?](https://aws.amazon.com/devops/what-is-devops/)
+ [DevOps リソース](https://aws.amazon.com/devops/resources/)

**Gitflow ガイダンス**
+ [元の Gitflow ブログ](https://nvie.com/posts/a-successful-git-branching-model/) (Vincent Driessen 氏のブログ記事)
+ [Gitflow ワークフロー](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow) (Atlassian)
+ [Gitflow on GitHub: How to use Git Flow workflows with GitHub Based Repos](https://youtu.be/WQuxeEvaCxs) (YouTube 動画)
+ [Git Flow Init Example](https://www.youtube.com/watch?v=d4cDLBFbekw) (YouTube 動画)
+ [The Gitflow Release Branch from Start to Finish](https://www.youtube.com/watch?v=rX80eKPdA28) (YouTube 動画)

**その他のリソース**

[Twelve-factor app methodology](https://12factor.net/) (12factor.net)