AWSツールを使用したGitflowに参加してきました

f:id:m-sato-lvgs:20200108172806p:plain

こんにちは、msatoです。

AWS re:Invent2019のワークショップ「DOP202-R2 - [REPEAT 2] Implementing GitFLow with AWS tools」レポートになります。

概要

短命の機能ブランチを利用することは、多くのチームにとって最適な開発方法です。このワークショップでは、AWSツールを使用してマージとリリースのタスクを自動化する方法を学びます。 AWS CodePipeline、AWS CodeCommit、AWS CodeBuild、AWS CodeDeployを使用してGitFlowを実装する方法の高レベルフレームワークについて説明します。また、事前に構築された例を見て、個々のユースケースにフレームワークをどのように採用できるかを調べる機会もあります。

原文 Utilizing short-lived feature branches is the development method of choice for many teams. In this workshop, you learn how to use AWS tools to automate merge-and-release tasks. We cover high-level frameworks for how to implement GitFlow using AWS CodePipeline, AWS CodeCommit, AWS CodeBuild, and AWS CodeDeploy. You also get an opportunity to walk through a prebuilt example and examine how the framework can be adopted for individual use cases.

スピーカー

Ashish Gore Sr. Technical Account Manager , Amazon Web Services Amit Jha Sr. Solutions Architect , Amazon Web Services

GitFlowとは

git-flowは、正確にいうと Vincent Driessen 氏が提唱する「A successful Git branching model」というブランチモデルをサポートするツール(コマンド)の名称です。

一般的には、モデルとツールのどちらの名称としても使われています。git-flowでは、役割が決められた5種類(場合によっては6種類)のブランチを切り替えながら開発を進めていきます。

ブランチの作成やマージに決まりを設けることで、複数人での開発時にもブランチをわかりやすい状態に保つことができ、不用意なマージによる問題を避けることが可能です。

[参考 Git-flow ~Gitのブランチモデルを知る~] (https://tracpath.com/bootcamp/learning_git_git_flow.html)

資料

AWS TOOLS GITFLOW WORKSHOP

レポート

Codeシリーズを始めとしたAWSサービスを使って、Gitflowを実現するワークショップです。

f:id:m-sato-lvgs:20200108174032p:plain

使用するAWSサービスの概要

今回のワークショップで、使用するAWSサービスの概要です。

CodeCommit: Gitリポジトリをホストするサービス CodePipeline: 継続的デリバリーサービス CodeBuild: ビルドサービス(ソースコードのコンパイル、テスト) CodeDeploy: デプロイを自動化するサービス Lambda: サーバレスでコードを実行できるサービス Cloudformation: AWSリソースのプロビジョニングサービス Elasticbeanstalk: ユーザがインフラを管理しなくても、アプリケーションをホスティングできるサービス

ブランチが作成された際の流れ

f:id:m-sato-lvgs:20200108174057p:plain

ブランチが作成された際に、自動で環境が立ち上がりコードがデプロイされます。 流れは以下です。削除時も同様です。

  1. ユーザがCodeCommitリポジトリにブランチを作成する
  2. Codecommitトリガーで、ブランチが作成されたのを検知してLambdaを呼び出す
  3. LambdaではCloudformationを実行する
  4. Cloudformationでは、CodePipelineとElasticBeanstalkが作成される。

まとめ

ブランチを作るだけで、環境が立ち上がりデプロイされるのはとても楽ですね。

個人的には、CodeCommitのトリガーが便利だと思いました。 AWSのサービスなので、Lambdaとの連携が簡単です。 (githubでもwebhook使えばできます)

Gitのブランチモデルに合わせて、最適なデプロイの流れを作っていきたいです。