Jenkins trong 25 ngày

Buổi 1: Giới thiệu Jenkins và CI/CD

  • Tìm hiểu về CI/CD, lợi ích và quy trình.

  • Giới thiệu Jenkins, vai trò trong CI/CD, kiến trúc tổng quan.

  • Cài đặt Jenkins (tùy chọn cài đặt trên Docker).

  • Bài tập:

    1. Cài đặt Jenkins trên môi trường bạn chọn (local hoặc Docker).

    2. Tạo job "Hello, Jenkins!" đầu tiên.

    3. Tìm hiểu thêm về lịch sử và cộng đồng Jenkins.

Buổi 2: Tạo và Quản lý Jobs

  • Tìm hiểu về các khái niệm cơ bản: Job, Build, Plugin.

  • Tạo và cấu hình Freestyle Project: các bước build, post-build actions.

  • Sử dụng Jenkins UI để quản lý jobs, builds, lịch sử build.

  • Bài tập:

    1. Tạo một Freestyle Project lấy mã từ GitHub và build bằng Maven.

    2. Cấu hình job để gửi email thông báo kết quả build.

    3. Tìm hiểu và cài đặt một số plugin hữu ích khác (ví dụ: Slack Notification).

Buổi 3: Jenkins Pipeline Cơ bản

  • Giới thiệu Jenkins Pipeline, so sánh Declarative và Scripted Pipeline.

  • Cú pháp cơ bản của Declarative Pipeline: agent, stages, steps.

  • Sử dụng các step phổ biến: sh, git, junit, archiveArtifacts.

  • Bài tập:

    1. Viết một Declarative Pipeline đơn giản để build và test một ứng dụng Java.

    2. Thêm một stage để deploy ứng dụng lên một server (ví dụ: Tomcat).

    3. Tìm hiểu về các step khác trong Jenkins Pipeline và thử nghiệm chúng.

Buổi 4: Pipeline Nâng cao & Jenkinsfile

  • Tìm hiểu về các tính năng nâng cao của Pipeline: parallel stages, when conditions, input steps.

  • Sử dụng biến môi trường, credentials, tham số trong Pipeline.

  • Giới thiệu Jenkinsfile, quản lý Pipeline trong mã nguồn.

  • Bài tập:

    1. Viết một Pipeline với parallel stages để build và test ứng dụng trên nhiều môi trường.

    2. Sử dụng input step để yêu cầu xác nhận trước khi deploy.

    3. Tạo một Jenkinsfile và thêm nó vào một dự án trên GitHub.

Buổi 5: Tích hợp Docker & Kubernetes

  • Tìm hiểu về Docker, lợi ích của việc sử dụng Docker trong CI/CD.

  • Sử dụng Docker trong Jenkins Pipeline: build image, chạy container.

  • Giới thiệu Kubernetes, tích hợp Jenkins với Kubernetes.

  • Bài tập:

    1. Viết một Pipeline để build một Docker image và đẩy nó lên Docker Hub.

    2. Chạy các bài kiểm thử bên trong một Docker container.

    3. (Nâng cao) Triển khai ứng dụng lên một cluster Kubernetes.

Buổi 6: Kiểm thử Tự động & Báo cáo

  • Tích hợp Jenkins với các framework kiểm thử (JUnit, Selenium, Cypress).

  • Thu thập và hiển thị kết quả kiểm thử, tạo báo cáo trực quan.

  • Sử dụng plugin Test Results Analyzer để phân tích xu hướng kiểm thử.

  • Bài tập:

    1. Viết một Pipeline để chạy các bài kiểm thử JUnit và hiển thị kết quả trong Jenkins.

    2. Tạo một báo cáo HTML về kết quả kiểm thử và gửi email thông báo.

    3. Tìm hiểu về các plugin kiểm thử khác và thử nghiệm chúng.

Buổi 7: Bảo mật Jenkins & Quản lý Người dùng

  • Tìm hiểu về các lỗ hổng bảo mật thường gặp trong Jenkins.

  • Cài đặt và cấu hình Role-Based Access Control (RBAC).

  • Quản lý người dùng, nhóm, quyền, credentials.

  • Bài tập:

    1. Cài đặt và cấu hình RBAC để kiểm soát quyền truy cập vào các job và view.

    2. Tạo các nhóm người dùng và gán quyền cho họ.

    3. Tìm hiểu về các plugin bảo mật khác và thử nghiệm chúng.

Buổi 8: Hiệu năng & Giám sát Jenkins

  • Giám sát hiệu suất Jenkins bằng plugin Monitoring.

  • Xác định và giải quyết các nút thắt cổ chai hiệu suất.

  • Sử dụng bộ nhớ đệm, phân tán build để tăng tốc độ build.

  • Bài tập:

    1. Cài đặt và cấu hình plugin Monitoring.

    2. Theo dõi hiệu suất của các job và xác định các vấn đề tiềm ẩn.

    3. Thử nghiệm các kỹ thuật tối ưu hóa hiệu suất khác nhau.

Buổi 9: Jenkins Configuration as Code (JCasC)

  • Tìm hiểu về JCasC, lợi ích của việc quản lý cấu hình bằng mã.

  • Cấu trúc của tệp cấu hình JCasC (YAML).

  • Áp dụng cấu hình JCasC, quản lý cấu hình trong Git.

  • Bài tập:

    1. Chuyển đổi cấu hình Jenkins hiện có sang định dạng YAML.

    2. Tạo một kho lưu trữ Git để lưu trữ cấu hình JCasC.

    3. Thực hành áp dụng cấu hình JCasC từ kho lưu trữ Git.

Buổi 10: Blue Ocean & Giao diện Người dùng

  • Khám phá Blue Ocean, giao diện người dùng trực quan của Jenkins.

  • Tạo và quản lý Pipeline trực quan với Blue Ocean.

  • Tùy chỉnh giao diện Jenkins, cài đặt theme.

  • Bài tập:

    1. Chuyển đổi một Pipeline hiện có sang Blue Ocean.

    2. Tạo một Pipeline mới từ đầu bằng Blue Ocean.

    3. Tìm hiểu về các tùy chọn tùy chỉnh giao diện Jenkins.

Buổi 11: Phân tích & Thiết kế CI/CD

  • Phân tích yêu cầu của dự án ứng dụng web (ngôn ngữ, framework, môi trường).

  • Thiết kế kiến trúc CI/CD:

    • Xác định các giai đoạn (build, test, deploy).

    • Chọn công cụ và công nghệ phù hợp (Git, Docker, Kubernetes).

    • Vẽ sơ đồ quy trình CI/CD.

  • Bài tập:

    1. Nghiên cứu về ứng dụng web mẫu (ví dụ: Spring Boot, React).

    2. Lập danh sách các yêu cầu và ràng buộc của dự án.

    3. Vẽ sơ đồ kiến trúc CI/CD chi tiết.

Buổi 12: Cài đặt & Cấu hình Jenkins

  • Cài đặt Jenkins trên môi trường đã chọn (local hoặc server).

  • Cấu hình Jenkins: cài đặt plugin, quản lý người dùng, bảo mật.

  • Tích hợp Jenkins với Git (GitHub, GitLab, Bitbucket).

  • Bài tập:

    1. Cài đặt Jenkins và các plugin cần thiết (Git, Docker, Kubernetes nếu sử dụng).

    2. Cấu hình Jenkins để kết nối với kho lưu trữ Git của dự án.

    3. Thử nghiệm kết nối Git bằng cách tạo một job đơn giản để lấy mã nguồn.

Buổi 13: Viết Jenkins Pipeline (Phần 1)

  • Tạo một Jenkinsfile trong dự án.

  • Viết các stage cơ bản của Pipeline:

    • Checkout code từ Git.

    • Build ứng dụng (ví dụ: Maven, Gradle, npm).

    • Chạy các bài kiểm thử đơn vị.

  • Bài tập:

    1. Viết Jenkinsfile với các stage cơ bản.

    2. Chạy Pipeline và kiểm tra kết quả build và test.

    3. Thêm các stage khác nếu cần thiết (ví dụ: kiểm thử tích hợp, phân tích code).

Buổi 14: Viết Jenkins Pipeline (Phần 2)

  • Thêm các stage nâng cao vào Pipeline:

    • Build Docker image (nếu sử dụng Docker).

    • Đẩy Docker image lên registry (Docker Hub, ECR, GCR).

    • Triển khai ứng dụng lên môi trường staging (sử dụng Docker hoặc Kubernetes).

  • Bài tập:

    1. Thêm các stage Docker vào Jenkinsfile.

    2. Build và đẩy Docker image lên registry.

    3. Triển khai ứng dụng lên môi trường staging và kiểm tra.

Buổi 15: Tích hợp Docker & Kubernetes

  • (Nếu sử dụng Docker) Tối ưu hóa quá trình build Docker image.

  • (Nếu sử dụng Kubernetes) Viết các manifest Kubernetes cho ứng dụng.

  • Triển khai ứng dụng lên môi trường production (sử dụng Docker hoặc Kubernetes).

  • Bài tập:

    1. Tối ưu hóa Dockerfile để giảm kích thước image.

    2. (Nếu sử dụng Kubernetes) Viết các manifest Kubernetes.

    3. Triển khai ứng dụng lên môi trường production và kiểm tra.

Buổi 16: Kiểm thử Tự động & Báo cáo

  • Tích hợp các framework kiểm thử vào Pipeline (JUnit, Selenium, Cypress).

  • Thu thập và hiển thị kết quả kiểm thử trong Jenkins.

  • Tạo báo cáo kiểm thử và gửi email thông báo.

  • Bài tập:

    1. Viết các bài kiểm thử tự động cho ứng dụng.

    2. Tích hợp các bài kiểm thử vào Jenkins Pipeline.

    3. Cấu hình Jenkins để gửi báo cáo kiểm thử qua email.

Buổi 17: Bảo mật & Quản lý Người dùng

  • Cài đặt và cấu hình Role-Based Access Control (RBAC).

  • Tạo các nhóm người dùng và gán quyền.

  • Bảo mật các credentials và thông tin nhạy cảm.

  • Bài tập:

    1. Cài đặt và cấu hình RBAC trong Jenkins.

    2. Tạo các nhóm người dùng và phân quyền cho từng nhóm.

    3. Sử dụng plugin Credentials Binding để quản lý credentials.

Buổi 18: Hiệu năng & Giám sát

  • Cài đặt và cấu hình plugin Monitoring.

  • Theo dõi hiệu suất của Jenkins và các job.

  • Xác định và giải quyết các vấn đề về hiệu suất.

  • Bài tập:

    1. Cài đặt và cấu hình plugin Monitoring.

    2. Theo dõi hiệu suất của Jenkins trong quá trình build và deploy.

    3. Tìm hiểu về các cách tối ưu hóa hiệu suất Jenkins.

Buổi 19: Jenkins Configuration as Code (JCasC)

  • Chuyển đổi cấu hình Jenkins sang định dạng YAML.

  • Tạo một kho lưu trữ Git để lưu trữ cấu hình JCasC.

  • Áp dụng cấu hình JCasC từ kho lưu trữ Git.

  • Bài tập:

    1. Chuyển đổi cấu hình Jenkins hiện tại sang YAML.

    2. Tạo một kho lưu trữ Git và đẩy cấu hình lên đó.

    3. Cấu hình Jenkins để sử dụng cấu hình từ kho lưu trữ Git.

Buổi 20: Blue Ocean & Tùy chỉnh Giao diện

  • Sử dụng Blue Ocean để quản lý và trực quan hóa Pipeline.

  • Tạo Pipeline mới bằng Blue Ocean.

  • Tùy chỉnh giao diện Jenkins bằng theme và CSS.

  • Bài tập:

    1. Chuyển đổi Pipeline hiện tại sang Blue Ocean.

    2. Tạo một Pipeline mới hoàn toàn bằng Blue Ocean.

    3. Tìm hiểu về các cách tùy chỉnh giao diện Jenkins.

Buổi 21: Hoàn thiện Pipeline và Tích hợp

  • Rà soát lại toàn bộ Jenkinsfile, đảm bảo tính nhất quán và logic.

  • Tối ưu hóa các stage trong Pipeline (ví dụ: sử dụng cache, giảm thời gian build).

  • Tích hợp các công cụ kiểm thử code (ví dụ: SonarQube, Checkstyle) vào Pipeline.

  • Bài tập:

    1. Tối ưu hóa thời gian build bằng cách sử dụng cache cho các dependencies.

    2. Tích hợp SonarQube để phân tích chất lượng code và hiển thị kết quả trong Jenkins.

    3. Thêm các bước kiểm tra chất lượng code khác (ví dụ: Checkstyle, FindBugs) vào Pipeline.

Buổi 22: Kiểm thử Tích hợp và Hệ thống

  • Thực hiện kiểm thử tích hợp (Integration Testing) để đảm bảo các thành phần của ứng dụng hoạt động tốt với nhau.

  • Viết các kịch bản kiểm thử tích hợp (ví dụ: sử dụng REST Assured, Postman).

  • Tích hợp các bài kiểm thử tích hợp vào Jenkins Pipeline.

  • Bài tập:

    1. Viết các kịch bản kiểm thử tích hợp cho các API hoặc giao diện quan trọng.

    2. Chạy các bài kiểm thử tích hợp trong Jenkins Pipeline và kiểm tra kết quả.

    3. Xử lý các lỗi và báo cáo kết quả kiểm thử.

Buổi 23: Kiểm thử Hệ thống và Triển khai

  • Thực hiện kiểm thử hệ thống (System Testing) để kiểm tra toàn bộ ứng dụng trong môi trường gần giống production.

  • Viết các kịch bản kiểm thử hệ thống (ví dụ: sử dụng Selenium, Cypress).

  • Chuẩn bị môi trường production (ví dụ: cấu hình server, database).

  • Bài tập:

    1. Viết các kịch bản kiểm thử hệ thống để mô phỏng hành vi người dùng.

    2. Chạy các bài kiểm thử hệ thống trong Jenkins Pipeline và kiểm tra kết quả.

    3. Chuẩn bị tài liệu hướng dẫn triển khai ứng dụng lên môi trường production.

Buổi 24: Triển khai và Giám sát

  • Triển khai ứng dụng lên môi trường production theo tài liệu đã chuẩn bị.

  • Cấu hình giám sát cho ứng dụng và hệ thống CI/CD (ví dụ: sử dụng Prometheus, Grafana).

  • Thiết lập cảnh báo để nhận thông báo khi có sự cố.

  • Bài tập:

    1. Triển khai ứng dụng lên môi trường production và kiểm tra hoạt động.

    2. Cài đặt và cấu hình các công cụ giám sát.

    3. Thiết lập cảnh báo cho các sự kiện quan trọng (ví dụ: build thất bại, ứng dụng ngừng hoạt động).

Buổi 25: Hoàn thiện và Báo cá

  • Rà soát lại toàn bộ quy trình CI/CD, đảm bảo mọi thứ hoạt động trơn tru.

  • Hoàn thiện tài liệu hướng dẫn sử dụng và bảo trì hệ thống CI/CD.

  • Chuẩn bị báo cáo tổng kết dự án, nêu bật các thành tựu và bài học kinh nghiệm.

  • Bài tập:

    1. Hoàn thiện tài liệu hướng dẫn sử dụng và bảo trì hệ thống CI/CD.

    2. Viết báo cáo tổng kết dự án, trình bày kết quả và đánh giá.

    3. Chia sẻ kinh nghiệm và bài học với đồng đội hoặc cộng đồng.