AWSとGitHubを組み合わせてさくっとDevOpsを実現するCodeStarのご紹介 #AWSSummit
AWS Summit Tokyo 2018において、GitHubとAWSのCodeStarの連携についてのセッションを受講したので、その様子をお届けします。
AWSにおけるDevOpsを支えるCodeシリーズ、最近は非常に充実してきていますが、さらにGitHubを連携させることで、お手軽簡単に開発フローを揃えることができます。セッションでは動画を交えてその流れを説明していだき、「こりゃとっかかりには最高だべ」と感じたので、その様子をレポート致します。
__ (祭) ∧ ∧ Y ( ゚Д゚) Φ[_ソ__y_l〉 CodeStarとGitHubダ ワッショイ |_|_| し'´J
セッション概要
「CodeStar で実践する GitHub Flow ープルリクベースでサーバレスアプリを自動デプロイ!」
講演者は「池田 尚史」さん。
ギットハブ・ジャパン合同会社 ソリューションズエンジニア ソリューションズエンジニア
昨年秋、AWS Codestar と GitHub の連携がリリースされました。このセッションでは、 CodeStar と GitHub の連携を行い、 Serverless アプリケーションの自動デプロイ環境が簡単に構築するデモを紹介します。さらに一歩進んで、 Codestar の各コンポーネントのカスタマイズの仕方もお見せしながら、 Pull Request をベースとした GitHub Flow でどのような開発を行えるかもお見せします。
講師自己紹介
最初に自己紹介ですが、twitterアカウントはTakafumi Ikeda(@ikeike443)。443は、いわゆるひとつのあのポート番号なので、私との会話は常に暗号化されています。クレジットカード番号などお伝えいただいても大丈夫です。ご安心ください!
はい。というわけで本題に入ります。
池田貴史、ソリューションエンジニアとして働いています。主な業務はGitHubをご利用のお客様のサポートです。書籍もあります。チーム開発実践入門などありますので、ぜひ、Amazonで検索いただくとよろしいのでは無いでしょうか。
本日のアジェンダはこちら。
- GitHubについて
- AWS CodeStarについて
- CodeStarとGitHubを連携してみよう
- GitHub Flowを実践してみよう
GitHubについて
会社と知られていない方も多いかと思いますが、会社です。
- 登録ユーザー:2700万
- リポジトリ:8000万
- PGM言語:316
- FORTUNE100のうち45%の企業が導入中。
2015年に東京オフィス設立済み。気軽にお問い合わせいただければと思っております。
プロダクトも常にアップデートされています。結構いい感じの機能もリリースされているので、GitHubの最新動向をおさらいさせてください。
- Security Alert
- Introducing security alerts on GitHub | The GitHub Blog
- 脆弱性があるライブラリを利用している場合、アラートを出して、修正を促すことができる
- 最近のプロダクトは外部ライブラリへの依存が強まっている。人間がチェックするのは馬鹿らしいので、機械ベースでチェックするアプローチ
- Code Owners
- Introducing code owners | The GitHub Blog
- ファイルタイプやディレクトリによって、自動的に担当を割り当てて、プルリクストの通知や権限の設定ができる
- Project Board
- About project boards - User Documentation
- 任意のメンバー内でプロジェクトを管理する機能
- 企業でプロジェウト管理するための様々な機能を実装している
- Issue template
- Issue and Pull Request templates | The GitHub Blog
- Issueを様々な用途に利用したい場合、そのテンプレートを用意しておくことで、様々なユースケースに対応できるようになっている
- team discussions
- About team discussions - User Documentation
- チームを別途たてて、その中でのディスカッションや情報共有が可能
- GitHub Enterprise
- GitHub Enterprise - The best way to build and ship software
- オンプレミスでも利用できるので、企業におけるソフトウェア開発でも利用可能
そして先日、CodeStarとの連携が発表されました!
AWS CodeStarについて
AWS CodeStarの概要を振り返ります。
- AWSの各ツールを統合した開発環境を一発で用意できるサービス
- リポジトリ、CI/CD、監視、サーバレスアプリ開発環境などなど
- 昨年秋GitHubと連携できるように
(ここで、デモ動画が流されました。IAMユーザーを作成したのち、CodeStarプロジェクトを作成し、テンプレート環境を選択し、関連するGitHubのアカウントを連携させるだけで、CodePipeline、CodeBuild、CodeDeployなどが一気に作成されます)
このように、CodeStar側からGitHubのIssueをたてたり、リポジトリの登録も自動で可能です。CodeStarを利用すると開発に必要なリソース一式を一発で作成が可能。CodePipeline、CodeBuild、CodeDeployもすべて設定されています。
従来、人間が個別に設定していたところが完全に自動化されるので、プロジェクト初期の立ち上げ省力化に非常に寄与するかと思います。この状態で、ソースコードを修正して、Masterブランチにコミットするだけで、デプロイまですべて完了するようになっている。
GitHub Flowを実践してみよう
CodeStarで環境一式が出来上がったところで、今度はGitHub Flowを実践してみましょう。
GitHub Flowとは簡単に言うと、Masterブランチにいきなり機能をコミットする前に、各開発のためのブランチを都度作成し、そのなかで開発を進めプリリクエストを作成し、コードレビューがOKだったら、初めてMasterにマージする開発フローです。
- ブランチ作成後コミット
- プルリクエストの作成
- マージ前にコードレビューとCIを実践
- OKだった場合にマージ
- マージされたものが自動でデプロイされる
ここでは、開発ブランチでプルリクエストを投げたときに、自動的にCodeBuildを実施するように設定を変更します。CodeBuild → ビルドプロジェクトの編集 → GitHubのリポジトリをWebHookするように変更します。こうすることで、PullRequestの内容に、CodeBuildで実施したテスト内容を添えることができます。どうです?素敵ですよね?
(ここも動画でデモを実施していただきました。GitHubのプルリクエストの内容に、CodeBuildのテスト結果が表示されているのは、なかなか衝撃でした。これむっちゃ便利やん)
GitHub上ではソースコードの差分にテキストをいれることができる。そのタイミングで絵文字をいれて柔らかい雰囲気にするのは重要。煽ってると思われないようにしましょうね。GitHubで非常にリッチな内容でソースコードのレビューが可能です。皆さん、ぜひ活用してみてください。
さらにその先へ
さらに、この開発フローを進化させていくヒントを皆さんにご紹介します。
- プルリクエストに対してブランチベースデプロイの実現
- CodeBuild, CodeDeployをもっとカスタマイズ
- 開発ブランチ単位で自動テストを実施
- プルリクエストのカスタマイズ
- Protecetd Brancesの設定
- CodeOwnersの設定
- ChatOpsの実現
- ProbotやHubotをAWSツール群と連携して、Chatベースのデプロイを試す
まとめ「GitHubの強力すぎるGUIとAWSCodeシリーズの組み合わせは強い」
CodeStarを使ったことがなかったんですが、GitHubとの連携のなかで一連の流れを動画で見ることができ、その強力さを思い知りました。AWSのCodeシリーズは一通り機能が出揃い、今までOSSを組み合わせて実現していたCI/CDも、十分マネージドサービスで実現できるようになってきていると思います。
CodeシリーズとGitHubとの連携は非常に強力なので、まずはCodeStarでどーんと作ってしまって、その感触を試してみるのも良いと思います。
それでは、今日はこのへんで。濱田(@hamako9999)でした。