5 チャプター
39 課題

コース概要

CI/CDパイプライン構築コースでは、GitHub Actionsを用いてCIとCDの自動化ワークフローを構築していきます。

単にGitHub Actionsを使うだけではなく、複数の自動デプロイ手段を比較し、それぞれのメリット・デメリットを丁寧に解説し、自分のチームに合ったデプロイ戦略を選択できる力を養います。

前半パートでは、CIパイプラインの構築にフォーカスします。GitHub Actions上で自動テストを実行する仕組みを作りつつ、キャッシュを活用した高速化や、strategy.matrix による並列実行による時間短縮といった実践テクニックも学びます。

中盤では、ECSへのデプロイに焦点を当てます。TerraformとECSの相性が悪い理由から出発し、なぜecspresso(エスプレッソ) が有効なのか、そしてecspressoの基本的なコマンドの使い方まで、手を動かしながら習得していきます。

後半では、GitHub ActionsによるECSの自動デプロイパイプラインを構築します。パーミッション管理、変数のスコープなど、GitHub Actionsの基礎も改めて整理しつつ、実務レベルの本格的なパイプラインを組み上げていきます。

このコースをやりきることで、GitHub Actionsを用いたCI/CDパイプラインの構築・運用において、現場で通用する実践力を一通り身につけることができるはずです。

学習ポイント

  • 並列化やキャッシュによるパフォーマンス最適化
  • OIDCによるセキュアなAWS認証の実践
  • 差分のあるマイクロサービスのみをビルド・デプロイして、処理時間や課金を最小化
  • デプロイ前にDBマイグレーションを安全に実行するフロー
  • ecspressoを用いたECSデプロイの実行

構成図

CI/CDパイプライン構築コース 構成図
Ch.01 CI/CDパイプライン構築コースのオンボーディング
01 CI/CDパイプライン構築コースの全体像を知る
02 GitHub Actions と Codeシリーズどちらを選択すれば良いのか
03 ローリングアップデート、Blue/Greenデプロイ、カナリアリリースの違いを知る
Ch.02 GitHub ActionsによりCIパイプラインを構築する
01 コスパ、タイパの良い自動テストを運用するための考え方
02 GitHub cloud-pratica-backendをforkする
03 【動画】ローカル環境でテストを実行してみる
04 GitHub Actionsにて、自動テストを実行する
07 [リファクタ] キャッシュを活用して高速化を図る
08 [リファクタ] strategy matrix を使って並列化を実現する
09 CI失敗時にSlackへ通知を送る
10 GitHub Actionsによる自動テストの最終動作確認、課題提出
Ch.03 ecspressoにより、ECS管理のつらみを解決する
01 TerraformでECSを管理するのはつらい
02 ecspresso入門
03 【動画】ecspresso init によりECSタスク定義、ECSサービスを取り込む
04 ecspresso registerによりECSタスク定義を登録する
05 【動画】ecspresso run によりDBマイグレーションを単発実行する
06 ecspresso run によりバッチ処理を単発実行する
07 ecspresso deployによりslack-metrics-apiをデプロイする
08 SSMパラメータストアの埋め込みを使ってリファクタする
09 【チャレンジ】prd環境にもecspressoを導入する
10 TerraformからECSサービスとECSタスク定義のコードを削除する
11 【Tips】ecspressoでECS Execとポートフォワーディングを行う
Ch.04 GitHub ActionsによりCDパイプラインを構築する 〜 インプット編 〜
01 GitHub Actions × ECS 自動デプロイの全体像をつかもう!
02 GitHub Actionsの正しいお作法を知る
03 GitHub Actionsのpermissionsを完全に理解する
04 GitHub Actionsのジョブのスコープを完全に理解する
05 GitHub Actionsで効率よく検証するためのTips
Ch.05 GitHub ActionsによりCDパイプラインを構築する 〜 実践編 〜
01 Dockerイメージをbuildするジョブを作成する
02 strategy matrix を使って並列にDockerイメージをbuildする
03 [リファクタ] OIDCを使用してAWS認証を行う
04 [リファクタ] 差分があるサービスのみbuildする
05 DBマイグレーションを実行するジョブを実装する
06 Slack Metrics APIのデプロイジョブを実装する
07 バッチ用のECSタスク定義登録のジョブを実装する
08 Slack通知を行うジョブを作成する
09 環境ごとに変数を分けるsetupジョブを実装する
10 自動デプロイのベタ書きの箇所を環境で切り替えられるようにリファクタする
11 CI/CDパイプライン構築コースの最終課題を提出する
12 stg環境のALBをお掃除する

コース突破者の声

H.O さん 受講完了

まずはじめに感じているのは、めちゃくちゃ面白かったです!
中々上手くいかずトライアンドエラーを繰り返しましたが、パイプラインが最後まで走った時は脳汁出ますね笑

Y.N さん 受講完了

このコースも他のコース同様実務にダイレクトに刺さりました!
コースを進めてる途中で実務でGo製システムのCIパイプラインを構築するチャンスが巡ってきたのでコースで学んだことを活かしてテスト、静的解析、カバレッジ計測、Slack通知を行うパイプラインをGithub Actionsで爆速で構築、運用に組み込むことができました!

R.I さん 受講完了

Cloud Praticaのカリキュラムの中でも特に楽しみにしていたコースでしたが、期待以上でした。\n\n特にCDパイプラインの構築はこれまで興味がありながらもなかなか業務で経験できなかった領域だったのと、書籍などでも学習しづらい分野なので、ハイレベルな現場で通用するパイプラインの構成をハンズオンで一から構築していく経験ができて、とても貴重な学びでした。\n\nまた、課題説明の中でありがたかったこととして、CDでやることはたったの4つしかない(⇒イメージビルド、DBマイグレーション、ECSタスク更新、成功/失敗通知)とシンプルに示してくださった点で、おかげで自分が複雑なパイプラインを実装している中で「今パイプラインのどこを構築しているのか」を見失わずに作り切ることができました。\n\n気になっていたecspressoについても経験でき、ECSタスク管理が劇的にシンプルになる点は感動しました。\n\nCP以外ではなかなかできないすばらしいカリキュラムだったと思います🙏

R.K さん 受講完了

CI/CDについては、これまでGitHub ActionsをAIに頼って改修や読解を行った経験はあったものの、自分で書くとなるとほぼ知識がない状態だったため、予想以上に難しいコースでした。
特に難しかったのは、strategy.matrixの考え方やneedsを使った並列処理、差分のあるディレクトリを切り分けて処理するための条件分岐です。失敗したら処理を止めるのか、スキップして後続を続けるのかといった挙動については、理解と実装の両方にかなり時間がかかりました。

S.T さん 受講完了

人生で初めてまともに触ったGithub Actionsだったので、かなり大変でした。
Github actions自体に対して、初めはGithub CI/CD実践ガイドというものを購入して独学で進めていたのですが、色々あって挫折してしまった過去がありました。その過去を乗り越えて、この課題で体系的に知識を身につけるところまで行けて本当に良かったと感じています。

K.M さん 受講完了

今までのコースとは違い、アウトプットの課題形式で進んでいったので、体感的にはterraform importコースの次に大変でした!笑
自分は割と正解を知って、そこから深ぼっていくのが得意なタイプなので、結構カンニングしながら進めた部分も多かったです。

A.S さん 受講完了

CI/CDに関する実務経験としてはAWSのCodeシリーズ(CodeCommit、CodeBuild、CodeDeploy、CodePipeline)について初歩的な部分しかなく、Github Actions自体触れるのがほぼ初めてだったので課題を進めるにあたり不安な箇所は所々ありました。
ただ、Github ActionsとCodeシリーズを選択する際の比較基準やリリース手法(ローリングアップデート、Blue/Greenデプロイ、カナリアリリース)について、丁寧に解説があったおかげでGithub Actionsの仕組みや、CI/CDでのものの全体像がかなりイメージしやすかったです!