강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Devops & Infra

[DevOps Essentials 3] Xây dựng CI đúng cách với GitHub Actions

Bạn sẽ tìm hiểu cách định cấu hình CI dựa trên Hành động GitHub và nội dung nào nên được đưa vào CI, đồng thời tìm hiểu về việc xác minh thông qua Khung SLSA, một chủ đề nóng trong Báo cáo Google DevOps 2022.

(5.0) 3 đánh giá

84 học viên

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

Dịch cái này sang tiếng Việt

  • C.I.

  • Hành động GitHub

  • Khung SLSA

  • Cơ sở hạ tầng

  • Hóa đơn vật liệu phần mềm

  • SonarQube

  • TruffleHog

  • ConfTest

  • AWS IAM

Github Action để cấu hình CI!

Có lẽ chỉ cần xây dựng tự động hóa
Bạn nghĩ rằng CI chỉ có thế thôi sao?

"Tôi tò mò muốn biết CI là gì. Làm thế nào tôi có thể hiểu rõ nhất khái niệm này từ góc độ kỹ thuật ?"

“Công ty tôi đã cài đặt và đang sử dụng giải pháp CI như Jenkins. Tôi nên đưa loại nội dung nào vào CI?”

“Tôi đã được tư vấn về chiến lược CI/CD của mình, nhưng tôi lo ngại về cách triển khai nó .”

“Chúng ta cần đánh giá và quản lý cấu trúc CI của tổ chức mình .”

Khi các tổ chức thảo luận về việc triển khai CI, việc triển khai thực tế thường chỉ bao gồm việc phân phối gói sau khi xây dựng. Tuy nhiên, việc triển khai CI liên quan đến việc thiết lập chuỗi cung ứng phần mềm (SSC). Nó không chỉ đơn giản là cài đặt một giải pháp CI.

Kiến thức cốt lõi tối thiểu dành cho các tổ chức mới tham gia CI

Tìm hiểu cách cấu hình Tích hợp liên tục (CI) bằng Github Actions và cách áp dụng các công cụ cần thiết để cấu hình Chuỗi cung ứng phần mềm trong CI.

Bài giảng này đề cập đến Mô hình CI Flow , một mô hình tối thiểu phải được triển khai khi xây dựng chuỗi cung ứng phần mềm dựa trên CI. Chúng tôi hy vọng bài giảng này sẽ hữu ích cho những ai quan tâm đến các tiêu chuẩn và phương pháp xây dựng và đánh giá hệ thống CI.


Mục đích và lý do cần CI
Tôi chắc chắn sẽ cho bạn biết.

Trường hợp 1 Có hướng dẫn nào để cấu hình CI không?

Khung SLSA cung cấp hướng dẫn cho Chuỗi cung ứng phần mềm.

Trường hợp 2: Trong hệ thống CI, có các khái niệm gọi là Host và Agent. Có những cách nào để cấu hình chúng?

Chúng tôi sẽ giải thích cách cấu hình CI Host bằng Github Actions và Agent bằng Agent dựa trên SaaS do Github cung cấp hoặc Agent của riêng bạn dựa trên môi trường Ephemeral.

Trường hợp 3: Tôi muốn đưa các hướng dẫn chính sách kỹ thuật của công ty vào CI. Có cách nào để thực hiện việc này không?

Bài viết này sẽ giải thích cách áp dụng kiểm tra bảo mật cho CI bằng SonarQube và Aqua Trivy. Bài viết cũng sẽ trình bày Chính sách dưới dạng Mã (PoC) thông qua ConfTest.

Trường hợp 4: Tổ chức của chúng tôi sử dụng IaC thông qua Terraform. Chúng tôi có thể quản lý chi phí này trước trong CI không?

Chúng tôi sẽ giải thích cách sử dụng InfraCost để chỉ ra mức tăng hoặc giảm chi phí cho các thay đổi của Terraform trong GitHub Pull Requests.

CI phải nắm bắt được bản chất, không chỉ là công cụ.

CI không chỉ đơn thuần là cài đặt phần mềm CI và tự động hóa việc build. Không giống như các khóa học CI thông thường tập trung vào build và tạo hiện vật, khóa học này tập trung vào mục đích cốt lõi của CI: Quản lý Chuỗi Cung ứng Phần mềm và Cam kết Có Cổng .

Ngoài ra, chúng tôi sẽ tiến hành phản ánh các xu hướng mới nhất như Quản lý phụ thuộc và Khung SLSA dựa trên Danh sách vật liệu phần mềm, được nêu bật do các vi phạm bảo mật gần đây do các thư viện nguồn mở gây ra (Log4j, SolarWind).


Nội dung học tập
Hãy xem thử nhé 📚

CI Học cách Thiết lập Tiêu chuẩn

Bạn sẽ hiểu rằng CI không chỉ là cài đặt phần mềm CI và tự động hóa việc build. Bạn cũng sẽ tìm hiểu về SLSA Framework và cách kết hợp nó với các giải pháp khác để đạt đến Framework Level 4 cao nhất.

Lên đến công nghệ cốt lõi để thực hiện

Bạn sẽ học cách triển khai Gated Commit bằng GitHub và khám phá cách xây dựng chuỗi CI cho các dịch vụ liên quan trong kiến trúc microservice. Bạn cũng sẽ học cách tạo GitHub Custom Actions và tận dụng chúng để xây dựng chuỗi cung ứng phần mềm có thể tái sử dụng. Bạn cũng sẽ hiểu các đặc điểm và sự khác biệt giữa các tác nhân Persistent và Ephemeral.

Chương trình giảng dạy chi tiết 📖

Bắt đầu với Github Actions

  • Ký cam kết Github
  • Quy trình CI dựa trên Spring/Gradle + Thông báo Slack
  • Dịch vụ dựa trên Node.js CI Process + dịch vụ liên quan CI Process call

Xác minh tính ổn định của việc triển khai IaC

  • Triển khai Chính sách dưới dạng Mã bằng ConfTest
  • Triển khai Kiểm tra thông tin xác thực bằng TruffleHog
  • Bình luận về chi phí bổ sung ước tính của Terraform IaC trong Yêu cầu kéo bằng InfraCost.

Kiểm tra lỗ hổng bảo mật trong CI

  • Cấu hình SAST sử dụng phiên bản cộng đồng SonarQube
  • Quét lỗ hổng và quản lý SBOM bằng Aqua Trivy và Dependency Track

Quản lý hình ảnh container bằng kho lưu trữ riêng

Mô-đun hóa quy trình xây dựng với GitHub Custom Actions

  • Cấu hình Hành động tùy chỉnh dựa trên vùng chứa
  • Cấu hình các hành động tùy chỉnh dựa trên JavaScript
  • Thành phần hành động tổng hợp

Triển khai một GitHub Self-hosted Runner

Tóm tắt thông qua Khung SLSA


Những điều cơ bản của DevOps
Tôi là Lee Jeong-seok .

Tôi là một kỹ sư CNTT du mục kỹ thuật số với khoảng 15 năm kinh nghiệm làm lập trình viên full-stack và kỹ sư/chuyên gia tư vấn DevOps tại Hàn Quốc, Úc và Anh. Tôi liên tục học hỏi những chủ đề mới để tối ưu hóa hoạt động CNTT của tổ chức , và tôi mơ ước được làm kỹ sư cho đến khi nghỉ hưu. Hiện tại, tôi đang làm kỹ sư DevOps trong nhóm Trải nghiệm Nhà phát triển tại một ngân hàng ở Melbourne, Úc.

Lịch sử chi tiết

  • Tôi đã bắt đầu công việc thực tập đầu tiên của mình tại The Latin Traveller! [London, Vương quốc Anh]
  • Thông tin du lịch Topas của Tập đoàn Hanjin cũ - Phát triển Java/Oracle [Seoul, Hàn Quốc]
  • Cựu) NuSkin Hàn Quốc - Phát triển Java/Oracle [Seoul, Hàn Quốc]
  • Sự tò mò về quy trình kinh doanh đã dẫn tôi đến việc hoàn thành chương trình MBA toàn thời gian [Seoul/Nice, KR/FR]
  • Cựu KOSCOM - C Development [Seoul, KR]
  • Cựu nhân viên chứng khoán KDB Daewoo - Phát triển bằng Java, C#, Python, MongoDB, Oracle, Sybase, ActiveMQ, v.v. [Seoul, KR]
  • Ngân hàng Quốc gia Úc (NAB) - Phát triển toàn diện [Melbourne, AU]
  • Trước đây là một trong bốn ngân hàng hàng đầu của Úc - Phát triển toàn diện/Tư vấn DevOps nội bộ [Melbourne, AU]
  • Cựu) Amazon Web Services - Chuyên gia tư vấn DevOps [Seoul/Melbourne, Hàn Quốc/Úc]
  • Một trong bốn ngân hàng hàng đầu của Úc hiện đang vật lộn với việc xác định số liệu DORA và triển khai cấu trúc CI có khả năng mở rộng bằng DevOps... [Melbourne, AU]

Hỏi & Đáp 💬

H. Khi triển khai CI, bạn không thể chỉ cần cài đặt Jenkins, nhập lệnh build và triển khai nó sao?

Mục tiêu của việc triển khai CI không chỉ là tự động hóa các bản dựng. Nó còn tự động hóa và xem xét các bản dựng, thử nghiệm và các yêu cầu về bảo mật/tuân thủ của tổ chức có thể phát sinh trong toàn bộ chuỗi cung ứng phần mềm, đảm bảo các hiện vật đáng tin cậy được chuyển giao cho nhóm CD.

H. Tôi thấy bạn sử dụng rất nhiều phần mềm. Tôi có cần kiến thức cơ bản nào về chúng không?

Trong bài giảng này, chúng tôi sẽ giải thích mục đích và phương pháp sử dụng phần mềm được sử dụng và tiến hành quá trình tích hợp phần mềm đó với CI.

H. Phần này quan trọng như thế nào khi xây dựng sự nghiệp trong DevOps?

Trong các vị trí liên quan đến DevOps, CI/CD là một yêu cầu cơ bản, và các câu hỏi về CI thường yêu cầu ý tưởng hoặc kinh nghiệm về cách cấu trúc pipeline. Luồng pipeline và cam kết có cổng là những khía cạnh quan trọng, và bài giảng này sẽ đề cập đến các khía cạnh này.

💾 Những điều cần lưu ý trước khi tham gia lớp học
Các thông số kỹ thuật PC và phiên bản dịch vụ sau đây là bắt buộc đối với hướng dẫn này:

  • CPU: 4 lõi trở lên dòng x86-64/amd64
  • Bộ nhớ 8GB trở lên, Bộ nhớ lưu trữ 30GB trở lên
  • Kubernetes 1.21 trở lên, Helm 3.8 trở lên
  • Các bài giảng sẽ được tiến hành bằng cách sử dụng các công cụ xây dựng phần mềm, IaC (Terraform, Kubernetes, Helm), tập lệnh shell, v.v., nhưng bạn vẫn có thể theo dõi các bài giảng ngay cả khi bạn không có kiến thức cơ bản về những thứ này.
  • Để biết thêm thông tin về tài liệu khóa học, vui lòng tham khảo ghi chú ở cuối khóa học [Phần 2 - Cài đặt SigNoz] . Toàn bộ mã nguồn được sử dụng trong bài giảng này đều có sẵn trên kho lưu trữ GitHub. Việc truy cập qua liên kết Google Form có thể mất tới 48 giờ để được chấp thuận, và bạn không được phép chia sẻ mã nguồn hoặc nội dung của bài giảng này với người khác.

Xem các bài giảng liên quan cùng nhau 📺

Khuyến nghị cho
những người này

Khóa học này dành cho ai?

  • Nếu bạn tò mò về cách sắp xếp nội dung trong CI

  • Nếu bạn chưa quen với GitHub Actions và muốn có được kiến ​​thức cơ bản

  • Bất cứ ai tò mò về cách cấu trúc CI trong Kiến trúc microservice

  • Bất cứ ai tò mò về cách cấu hình DevSecOps trong CI

Cần biết trước khi bắt đầu?

  • Tập lệnh Shell

  • Cách cài đặt môi trường Kubernetes, setup Minikube hoặc EKS/GKE/AKS

  • Cách cài đặt lệnh Helm

Xin chào
Đây là

423

Học viên

15

Đánh giá

7

Trả lời

3.8

Xếp hạng

7

Các khóa học

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

Chương trình giảng dạy

Tất cả

20 bài giảng ∙ (6giờ 34phút)

Ngày đăng: 
Cập nhật lần cuối: 

Đánh giá

Tất cả

3 đánh giá

5.0

3 đánh giá

  • sponge님의 프로필 이미지
    sponge

    Đánh giá 6

    Đánh giá trung bình 5.0

    5

    100% đã tham gia

    Tôi tin rằng bài giảng này trình bày điểm khởi đầu cho sự tích hợp liên tục trong thực tế mà các nhóm phát triển phải triển khai trong thực tế. Ngoài việc chỉ chạy các bản dựng và kiểm tra đơn vị, các trường hợp và quy trình định cấu hình đăng ký kiểm soát, bao gồm phân tích tĩnh, bảo mật, ký và xuất bản cũng như thậm chí cả phản hồi, đều được cô đọng. Người ta đương nhiên mong đợi rằng điều này sẽ ngăn các mã lỗi không cần thiết mở rộng sang mã nguồn và điều này sẽ cải thiện hiệu quả sự cộng tác của nhóm phát triển. (Thật sự, trong suốt thời gian nghe bài giảng, tôi đã rất muốn tái cấu trúc quy trình CI mà tôi hiện đang quản lý haha) Trên hết, bạn có thể dễ dàng bị lạc vào sự phức tạp và nhiều quy trình liên quan, nhưng tôi thực sự đánh giá cao bạn vì đã sắp xếp nội dung trong khóa học và đưa ra hướng dẫn nâng cấp thông qua SLSA Framework. Nếu đây là lần đầu tiên bạn tham gia khóa học này, sau phần tổng quan đầu tiên, bạn sẽ tìm thấy phần 'Tóm tắt qua Khung SLSA' Sẽ là một ý tưởng tốt nếu bạn bắt đầu bằng việc lắng nghe buổi học trước.

    • eomsi4706님의 프로필 이미지
      eomsi4706

      Đánh giá 2

      Đánh giá trung bình 5.0

      5

      30% đã tham gia

      • stevenmin님의 프로필 이미지
        stevenmin

        Đánh giá 1

        Đánh giá trung bình 5.0

        5

        100% đã tham gia

        Có một số khó khăn khi tham gia bài giảng này vì các hệ thống hiện đang được phát triển và vận hành là các hệ thống cũ chạy trên trung tâm dữ liệu của công ty. Tuy nhiên, bằng cách xem xét mối liên hệ giữa các hệ thống khác nhau và các mô hình phát triển mới được giới thiệu trong bài giảng này, tôi có thể học được nhiều điều khác ngoài Github Actions. Không giống như các bài giảng 101 thông thường, tôi biết ơn vì mỗi nhận xét từ kinh nghiệm phong phú của tôi đều rất kích thích và hữu ích. Github Actions sẽ được áp dụng cho GHE mà tôi sẽ quản lý trong tương lai và tôi nghĩ nó sẽ giúp ích rất nhiều. Cảm ơn.

        4.155.294 ₫

        Khóa học khác của JeongSuk Lee

        Hãy khám phá các khóa học khác của giảng viên!

        Khóa học tương tự

        Khám phá các khóa học khác trong cùng lĩnh vực!