Laravel × CircleCI × AWS で CI/CDパイプラインの構築方法を学ぶ
本教材では、LaravelのサンプルアプリケーションをCIツールであるCircleCIで自動テストし、AWSに自動デプロイする仕組みの構築方法を学びます。
CI/CDパイプラインをあらかじめ構築しておくことで、バグの発生を抑えつつ、アプリケーションの機能追加などを1日に何回も本番環境にリリースすることが可能となります。
本教材のタイトルに含まれるCI/CDは、以下のような仕組みのこととなります。
- CI(継続的インテグレーション)
- 変更されたソースコードがGitHubなどのリポジトリに提出(プッシュ)されるたびに自動でテストを行うことで、変更後のソースコードをリポジトリのメインライン(masterブランチなど)に統合(gitで言うところのマージ)可能な状態にする仕組み
- CD(継続的デリバリー)
- メインラインのソースコードが変更されるたびに、自動で本番環境などにデプロイする仕組み
このような仕組みを組み合わせた一連の流れをCI/CDパイプラインと呼びます。
学習内容
本教材を通じて、以下について学ぶことができます。
- GitHubとCircleCIの連携方法
- Laravelでのごく簡単なテストの書き方
- CircleCIでの自動テストの実行方法
- Laravel + Vue.jsのアプリケーションをEC2 + nginx + RDS(PostgreSQL)の環境で動かす方法
- CircleCIからAWS(EC2)にLaravel + Vue.jsアプリケーションをデプロイする方法3種類
- CircleCIからAWSのEC2にSSHログインしてデプロイ
- CircleCI + CodeDeployを使ってEC2にデプロイ
- CircleCI + CodeCommit + CodeBuild + CodeDeploy + CodePipelineを使ってEC2にデプロイ
また、周辺知識として以下も解説していきます。
- YAMLの書き方
- Bashスクリプトの書き方
- Linuxで新規ユーザーを作り、SSHログイン可能とする方法
本教材の対象者
- 自動テスト、自動デプロイ、CI/CDといった言葉に関心があり、その構築方法を効率的に学びたい方
- CircleCIの基礎的な使い方を学びたい方
- AWS(EC2)への自動デプロイ方法を学びたい方
受講における必要条件
本教材は中級者向けとなっています。以下の条件を満たすかどうか事前に確認して受講してください。
- AWSアカウントを持っており、AWSを触ったことがあること
- AWSのマネジメントコンソールにログイン可能な、管理者権限(AdministratorAccess)を持ったIAMユーザーを用意できること
- Gitの初歩的な知識(ブランチを作る、コミットする、などが行える)
- GitHubの初歩的な知識(アカウントを持っていて自分のリポジトリを作ったことがある、プルリクエストを立てることができる)
- Laravelの初歩的な知識(モデルからデータを取得して画面に表示する程度のアプリケーションを作ったことがある)
- Linuxのコマンドの初歩的な知識(ls, cd, pwd, mkdir, catを使ったことがある)
AWSの利用料金について
本教材で利用するAWSリソースについては、一部従量制料金の対象のものがあります。
EC2やRDSなどは無料利用枠が設定されたスペックのものを使用するなど、教材全体で極力料金を抑えるようにしていますが、利用状況次第では費用が発生する可能性があります。
あらかじめご了承ください。
学ばないこと
- LaravelやVue.jsそのものの知識
- Laravelでの様々なテストの書き方(教材では、ごく一部の機能のみテストします)
- Vue.jsのテストの書き方(教材では、Vue.jsのテストは行いません)
その他、本教材では、テーマであるCI/CDを集中して学べるよう、一部のAWSのリソースはテンプレートファイル(CloudFormation)を使って自動で作成します。
具体的には以下のAWSリソースとなります。
- VPC、サブネット、サブネットグループ、ルートテーブル、インターネットゲートウェイ、セキュリティグループ、EC2
そのため、これらのAWSリソースに関しては、AWSの入門書などでよく登場するような、AWSのマネジメントコンソール(管理画面)でひとつひとつ作成する方法を説明していません。ご注意ください。
なお、以下のAWSリソースについてはAWSのマネジメントコンソールで作成していきます。
- RDS, S3, IAM, CodeCommit, CodeBuild, CodeDeploy, CodePipeline
本教材の対応バージョン
- CircleCI 2.1
- Laravel 6系
- Vue.js 2.6.11
本教材で質問対応可能なOSや環境
- Mac OS(注)
注: ただし、2020年11月発売のM1チップ搭載Macでは教材を進められない可能性があるのでご注意ください
回答可能な質問内容とそうでない質問内容
教材を進める中で生じたエラーに関する質問や、教材本文の説明内容がわかりにくい場合に再説明を求める質問に関しては回答可能です。
教材で取り扱っているWeb技術に対する広く一般的な質問は回答対象外としていますのでご了承ください。そうした質問はメンターサービスなどをご利用ください。
また、教材のアプリを参考にして作った、独自の実装部分が含まれるアプリのエラーや不具合に関する質問も回答対象外としております。
カリキュラム
- 2-1 本章の流れ
- 2-2 開発ブランチとデータベースに関する解説
- 2-3 記事一覧画面表示機能の把握
- 2-4 記事一覧画面表示機能のテスト
- 2-5 記事投稿画面表示機能の把握
- 2-6 ログイン前後での記事投稿画面表示のテスト
- 2-7 いいねされているかを判定するメソッドの把握
- 2-8 いいねされているかを判定するメソッドのテストとファクトリの作成
- 2-9 いいねされているかを判定するメソッドのテストの続き