// Course 05 — CI/CD
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パイプラインの構築・運用において、現場で通用する実践力を一通り身につけることができるはずです。
まずはじめに感じているのは、めちゃくちゃ面白かったです!
中々上手くいかずトライアンドエラーを繰り返しましたが、パイプラインが最後まで走った時は脳汁出ますね笑
このコースも他のコース同様実務にダイレクトに刺さりました!
コースを進めてる途中で実務でGo製システムのCIパイプラインを構築するチャンスが巡ってきたのでコースで学んだことを活かしてテスト、静的解析、カバレッジ計測、Slack通知を行うパイプラインをGithub Actionsで爆速で構築、運用に組み込むことができました!
Cloud Praticaのカリキュラムの中でも特に楽しみにしていたコースでしたが、期待以上でした。\n\n特にCDパイプラインの構築はこれまで興味がありながらもなかなか業務で経験できなかった領域だったのと、書籍などでも学習しづらい分野なので、ハイレベルな現場で通用するパイプラインの構成をハンズオンで一から構築していく経験ができて、とても貴重な学びでした。\n\nまた、課題説明の中でありがたかったこととして、CDでやることはたったの4つしかない(⇒イメージビルド、DBマイグレーション、ECSタスク更新、成功/失敗通知)とシンプルに示してくださった点で、おかげで自分が複雑なパイプラインを実装している中で「今パイプラインのどこを構築しているのか」を見失わずに作り切ることができました。\n\n気になっていたecspressoについても経験でき、ECSタスク管理が劇的にシンプルになる点は感動しました。\n\nCP以外ではなかなかできないすばらしいカリキュラムだったと思います🙏
CI/CDについては、これまでGitHub ActionsをAIに頼って改修や読解を行った経験はあったものの、自分で書くとなるとほぼ知識がない状態だったため、予想以上に難しいコースでした。
特に難しかったのは、strategy.matrixの考え方やneedsを使った並列処理、差分のあるディレクトリを切り分けて処理するための条件分岐です。失敗したら処理を止めるのか、スキップして後続を続けるのかといった挙動については、理解と実装の両方にかなり時間がかかりました。
人生で初めてまともに触ったGithub Actionsだったので、かなり大変でした。
Github actions自体に対して、初めはGithub CI/CD実践ガイドというものを購入して独学で進めていたのですが、色々あって挫折してしまった過去がありました。その過去を乗り越えて、この課題で体系的に知識を身につけるところまで行けて本当に良かったと感じています。
今までのコースとは違い、アウトプットの課題形式で進んでいったので、体感的にはterraform importコースの次に大変でした!笑
自分は割と正解を知って、そこから深ぼっていくのが得意なタイプなので、結構カンニングしながら進めた部分も多かったです。
CI/CDに関する実務経験としてはAWSのCodeシリーズ(CodeCommit、CodeBuild、CodeDeploy、CodePipeline)について初歩的な部分しかなく、Github Actions自体触れるのがほぼ初めてだったので課題を進めるにあたり不安な箇所は所々ありました。
ただ、Github ActionsとCodeシリーズを選択する際の比較基準やリリース手法(ローリングアップデート、Blue/Greenデプロイ、カナリアリリース)について、丁寧に解説があったおかげでGithub Actionsの仕組みや、CI/CDでのものの全体像がかなりイメージしやすかったです!