강의

멘토링

로드맵

Programming

/

Devops & Infra

[DevOps定石3] GitHub Actionsで正しく構築するCI

GitHub Actionsに基づいてCIをどのように構成するか、およびCIにはどのような内容が含まれるべきかについて学習し、Google DevOps Report 2022で話題になったSLSA Frameworkによる検証の部分を学習できます。

  • JeongSuk Lee
데브옵스
devops
sonarqube
github-actions
CI/CD
continuous-integration
SonarQube

こんなことが学べます

  • CI

  • GitHub Actions

  • SLSAフレームワーク

  • InfraCost

  • Software Bill of Material

  • SonarQube

  • TruffleHog

  • ConfTest

  • AWS IAM

CI構成のためのGithub Action!

ビルドオートメーションのみ
CIの全部だと思いましたか?

「CIが一体どんなものなのか気になります。技術的観点から概念をつかむにはどうしたらいいのでしょうか?」

「企業でJenkinsのようなCIソリューションをインストールして使っていますが、CI内にどのようなコンテンツを入れるべきでしょうか?」

「CI/CD戦略に対するコンサルティングは受けましたが、実装方法が悩みです」

「私たちの組織のCI構成の評価と管理が必要です」

組織でCIを導入する場合、実際に内容を見ると、ビルド後のパッケージ配布がすべてであることが多いです。ただし、CIで実装する必要があるのはSoftware Supply Chain(ソフトウェアサプライチェーン)を構成することで、 CIソリューションをインストールするだけではありません。

CIが初めての組織にとって最小限の重要な知識

Github Actionsを使用して Continuous Integration (CI) を構成する方法と、CI 内で Software Supply Chain を構成する際に必要なツールをどのように適用するかを学びます。

このレッスンでは、CIを使用してSoftware Supply Chainを構成するときに少なくとも実装する必要があるModel CI Flowについて説明します。 CIシステムを構築し評価するための基準と方法が気になった方には、この講義が役立つことを願っています。


CIが必要な目的と理由
確実にお知らせします。

Case 1 CI 構成のガイドラインはありますか?

SLSA Frameworkを介してSoftware Supply Chainのガイドラインを提示します。

Case 2 CIシステムにはHostとAgentという概念がありますが、どのように構成するのですか?

CI HostはGithub Actionsを使用し、AgentはGithubが提供するSaaSベースのAgentまたはEphemeral環境ベースの独自のAgentを構成する方法について説明します。

Case 3当社の技術的な方針ガイドラインをCIに入れたいのですが、方法がありますか?

CIでセキュリティチェックを適用する方法については、SonarQubeとAqua Trivyを参照してください。また、ConfTest を通じてPolicy as Codeとは何かについて説明します。

Case 4組織は Terraform を通じて IaC を使用しています。

InfraCostを活用して GitHub Pull Request に Terraform 変更のコスト増減を表示する方法について説明します。

CIはツールだけでなく本質も保持しなければなりません。

CIは、単なるCIソフトウェアをインストールし、ビルドを自動化するだけではありません。ビルドとArtifactの作成をカバーする一般的なCIレッスンとは異なり、このレッスンは、CIの本目的であるSoftware Supply Chain ManagementとGated Commitという概念に基づいています。

さらに、最近のオープンソースライブラリによるセキュリティ侵害事故(Log4j、SolarWind)によって浮上しているSoftware Bill of Materialを基盤に、Dependency management、SLSA Frameworkなどの最新トレンドまで反映して進めます。


学習内容
確認してください📚

基準を確立するCI学習

CIがCIソフトウェアをインストールしてビルドを自動化するだけではないことがわかります。さらに、SLSA Frameworkについて理解し、これがどのソリューションと組み合わせて、Framework Levelのトップレベルである4段階まで上げることができるかについて学びます。

実装のためのコア技術まで

Gated Commitを実現する方法をGitHubを通じて学習し、Microservice構造上で関連サービスのCIチェーンを作成する方法を学びます。 GitHub Custom Actionsを作成し、それを活用して再利用可能なSoftware Supply Chainを作成する方法を理解します。 Persistent agentとEphemeral agentの特徴と違いを一緒に理解します。

詳細カリキュラム📖

Github Actions はじめに

  • Github Commit Signing
  • Spring/GradleベースのCI Process + Slack Notification
  • Node.jsベースのサービスCIプロセス+関連サービスCIプロセスの呼び出し

IaC展開の安定性を検証する

  • ConfTestを使用したPolicy as codeの実装
  • TruffleHogによるCredential Exposure Checkの実装
  • InfraCostを活用したPull Request内のTerraform IaC予想追加コスト コメントする

CIでセキュリティの脆弱性を確認する

  • SonarQube community editionを使用したSASTの構成
  • Aqua TrivyとDependency Trackによる脆弱性チェックとSBOM管理

プライベートリポジトリを使用したコンテナイメージの管理

GitHub Custom Actionを使用してBuild Processをモジュール化する

  • Container ベースの Custom Action の構成
  • JavaScript ベースのカスタムアクションの設定
  • Composite Actionの設定

GitHub Self-hosted runnerを実装する

SLSA FrameworkによるSummary


DevOpsの定石
イ・ジョンソクです。

韓国・オーストラリア・イギリスでFull-stack Developer、DevOps Engineer/Consultantで15年ほど働いているDigital Nomad IT Engineerです。 IT組織の運用最適化のために絶えず新しいトピックについて勉強しており、引退するまでEngineerで生活したいという夢を持っています。現在、オーストラリアのMelbourneにある銀行のDeveloper ExperienceチームでDevOpsとして活動しています。

詳細履歴

  • 前)The Latin Travellerでインターンとして初めての職場生活を開始! [London, UK]
  • 前) 韓進グループトパス旅行情報 - Java/Oracle開発 [Seoul, JP]
  • 前) NuSkin Korea - Java/Oracle開発 [Seoul, JP]
  • ビジネスフローへの好奇心でFull-time MBAコース卒業 [Seoul/Nice, KR/FR]
  • 前) KOSCOM - C開発 [Seoul, JP]
  • 前) KDB大宇証券 - Java、C#、Python、MongoDB、Oracle、Sybase、ActiveMQなどを利用した開発 [Seoul, JP]
  • 前) National Australia Bank (NAB) - フルスタック開発 [Melbourne, AU]
  • 前)オーストラリアの4大銀行の1つ - Full-stack Development/In-house DevOps Consulting [Melbourne, AU]
  • 前) Amazon Web Services - DevOps Consultant [Seoul/Melbourne, JP/AU]
  • 県)オーストラリアの4大銀行の1つ - DevOpsでDORA Metricsの定義とScalable CI Structureの実装で交際... [Melbourne, AU]

Q&A 💬

Q. CIを実装するときにJenkinsをインストールしてBuild Commandを入れてデプロイするだけではありませんか?

CI実装はビルド自動化をすることは目標ではありません。全体的なSoftware Supply Chainで発生する可能性のあるビルド、テスト、組織のセキュリティ/コンプライアンス要件などを自動化してチェックし、信頼できるArtifactをCDパーツに渡すことがその目的と言えます。

Q. 使用するソフトウェアが多いのに関連した基礎知識が必要ですか?

本講義で使用するソフトウェアに関する部分については、使用目的と使用方法についての部分を説明しながらCIと統合する過程を進めます。

Q. DevOpsでキャリアを積むとき、このパートはどれほど重要ですか?

DevOpsに関連するポジションでは、CI / CDの部分は基本的な要件として含まれており、CIの質問でパイプラインをどのように構成するかについてのアイデアや経験を求めることがよくあります。この時、重要な見方がPipeline flowとGated commitに関わる部分であり、本講義ではこれらの部分を扱っています。

💾受講前の注意
練習には、次のPC仕様とサービスバージョンが必要です。

  • CPU:4コア以上x86-64/amd64シリーズ
  • メモリ8GB以上、ストレージ30GB以上
  • Kubernetes 1.21以上、Helm 3.8以上
  • Software build tool、IaC(Terraform、Kubernetes、Helm)、Shell Scriptなどを使って講義が行われますが、これについての基礎知識がないとしても聞くことに問題はありません。
  • 授業資料は[セクション2 - SigNozのインストール]授業下のノートをご確認ください。講義に使用したすべてのSource CodeをGitHub Repositoryを通じて提供します。 Google フォームリンクによるアクセスの承認には最大 48 時間かかる場合があります。 本講義のソースコードやコンテンツを他人と共有しないでください。

関連講義を一緒に見る📺

こんな方に
おすすめです

学習対象は
誰でしょう?

  • CI内でコンテンツをどのように構成するのか疑問に思った人

  • GitHub Actionsが初めてだから基本知識を得たい人

  • Microservice ArchitectureでCIがどのように構成されているのか疑問に思う人

  • CIでDevSecOpsがどのように構成されているのか疑問に思った人

前提知識、
必要でしょうか?

  • Shell Scripts

  • Kubernetes環境のインストール方法、MinikubeまたはEKS/GKE/AKSのセットアップ方法

  • Helm コマンドのインストール方法

こんにちは
です。

425

受講生

15

受講レビュー

7

回答

3.8

講座評価

7

講座

한국/호주/영국에서 Full-stack developer, DevOps Engineer/Consultant로 15년 정도 일을 하고 있는 Digital Nomad IT Engineer 입니다. IT 조직 운영의 최적화를 위해 끊임 없이 새로운 주제에 대해서 공부를 하고 있으며, 은퇴할 때까지 Engineer로 생활하고 싶다는 꿈을 가지고 있습니다. 현재는 호주 Melbourne에 있는 한 은행의 Developer Experience 팀에서 DevOps로 활동하고 있습니다.

カリキュラム

全体

20件 ∙ (6時間 34分)

講座掲載日: 
最終更新日: 

受講レビュー

全体

3件

5.0

3件の受講レビュー

  • Jeongyeol Lee님의 프로필 이미지
    Jeongyeol Lee

    受講レビュー 6

    平均評価 5.0

    5

    100% 受講後に作成

    개발팀을 대상으로 실무에서 반드시 구현해야 하는 현실적인 지속적인 통합(Continuous Integration)의 출발점이 제시된 강의라고 생각합니다. 단순히 빌드 및 단위 테스트를 돌리는 것을 넘어서, 정적분석, 보안, 서명과 퍼블리싱, 그리고 피드백까지를 포함한 Gated check-in 을 구성하는 사례와 그 과정이 압축되어 있었습니다. 이를 통해서 불필요한 오류 코드가 소스 코드에 확장되는 것을 방지하게 되고, 이를 통해서 개발팀의 협업이 효과적으로 향상 될 것이라고 자연스럽게 기대되었습니다. (정말로, 강의 듣는 내내 현재 관리중인 CI 프로세스를 리팩토링하고 싶어서 근질거렸습니다 ㅎㅎ) 무엇보다, 자칫 복잡하고 많은 과정을 거치는 것에 대해서 길을 잃기 쉬울 수있는데, SLSA Framework를 통해서 강의 과정에서 다루었던 내용 정리 및 고도화할 방향도 알려주셔서 정말 감사합니다. 만약 이 강의를 처음 수강하시는 분들이라면, 첫 Overview 이후에 제일 마지막에 있는 'SLSA Framework을 통한 Summary' 세션을 먼저 듣고 시작하시는 것도 좋을 것 같습니다.

    • 엄상인님의 프로필 이미지
      엄상인

      受講レビュー 2

      平均評価 5.0

      5

      30% 受講後に作成

      • Steven J.S Min님의 프로필 이미지
        Steven J.S Min

        受講レビュー 1

        平均評価 5.0

        5

        100% 受講後に作成

        현재 개발하고 운영하고있는 시스템들이 회사 데이터센터 기반으로 돌아가는 레거시 시스템이라서 이 강의를 듣는데는 어려운 부분도 있었습니다. 하지만 이 강의에서 소개하고있는 다양한 시스템간의 연계와 새로운 개발 패턴을 보면서 이 Github Actions 말고도 배울수있는것이 많았습니다. 일반 101강의와는 다르게 풍부한 경험에서 나오는 코멘트 하나하나들이 많은 자극과 도움이 되어 감사드립니다. 앞으로 제가 관리하게될 GHE에 Github Actions이 적용될 예정인데 많은 도움이 될것 같습니다. 고맙습니다.

        期間限定セール

        ¥148,500

        25%

        ¥23,158

        JeongSuk Leeの他の講座

        知識共有者の他の講座を見てみましょう!

        似ている講座

        同じ分野の他の講座を見てみましょう!