CI/CD với Github Action (Phần 1)

Nhờ sự ra đời của công nghệ container mà nổi trội là Docker, chúng ta có những thứ ra đời dựa trên công nghệ ảo hoá container này. Một trong những điều tuyệt vời đó là CI/CD. Ở loạt bài này, mình sẽ giới thiệu qua cho các bạn về CI/CD là gì, demo thực tế vào project sử dụng GitHub Action. Ở phần đầu tiên này mình giải thích sơ qua về CI/CD và demo CI nha, CD mình sẽ viết ở bài tiếp theo.

CI/CD là gì ? 

Theo định nghĩa đúng của nó là CI là Continuous Integration (tích hợp liên tục) và CD là Continuous Delivery (phân phối liên tục). Ây dà, sao nghe có vẻ hàn lâm quá vậy nè. Từ từ mình giải thích từng cái một nha.

Ví dụ team bạn có nhiều người, mỗi người code một chức năng ở mỗi branch khác nhau. Khi một người code xong commit lên git, bạn phải review code, rồi test chức năng vừa mới bổ sung và những chức năng cũ, cuối cùng là tạo pull request. Giả sử team bạn nhiều người thì sao nhở, bạn phải làm toàn bộ những công việc trên bằng tay à, à đúng rồi đấy. Vậy là người ta đưa ra khái niệm CI là tích hợp liên tục, bao gồm cả build, test, có thể là unit test hoặc integration test, sau khi build và test xong thì nó sẽ gửi thông báo hay gì đó tuỳ cấu hình, sau đó nó sẽ chuyển sang đoạn tiếp theo là CD.

Phân phối liên tục được hiểu theo một cách đơn giản nhất là tự động deloy ứng dụng của bạn lên server, CD có thể nằm riêng, hoàn toàn không phụ thuộc vào CI, nhưng mà trên thực tế thì CI/CD là một quy trình làm việc, code của bạn sẽ được build test và sau đó deloy trên server hoặc cloud một cách tự động luôn.

Có một ví trí cho công việc này trong dự án gọi là DevOps là người sẽ phụ trách phần này, kết nối giữa việc Develop (phát triển) và Operation (vận hành). Hiểu nôm na là người sẽ phụ trách CI/CD này luôn.

Việc ứng dụng CI/CD sẽ giúp chúng ta gia tăng năng xuất và chất lượng cho sản phẩm phần mềm bằng việc phát hiện và cảnh báo sớm những rủi ro, đưa ứng dụng deloy một cách nhanh chóng và tiết kiệm thời gian nhất có thể. Nghe đến đây chắc bạn cũng có đủ hứng thú để bắt tay vào thực hiện rồi đúng không, mình sẽ demo thử CI với GitHub Action nha.

CI với GitHubAction

Thật ra CI/CD thì có rất nhiều tool tiêu biểu, nổi tiếng như là Jenkins, GitLab CI/CD, Travis CI, CirclerCi hay Azure DevOps. Ở bài này mình sẽ sử dụng GitHub Action vì mình hay dùng Github để lưu trữ source code của mình.

Github free 2 nghìn phút build mỗi tháng cho private repo, còn open thì thoải mái nha.

Ngôn ngữ mình sử dụng trong bài này là Java với công cụ quản lý là Maven và để đơn giản thì mình chỉ sử dụng Unit Test thôi.

Cấu trúc project cũng đơn giản thôi, chỉ có Class compute và Test, mình chỉ làm để test CI thôi nên cũng lười viết nhiều lắm. Lang mang quá rồi, bắt đầu nha

Chọn cái Action này:

Chọn mẫu nha, thật ra có thể tự viết nhưng mà demo lấy cảm hứng thôi thì chọn có sẵn cho nhanh rồi edit một xíu lại:

Start commit và commit để thực hiện CI.

Vào lại Action để xem tiến trình mình đang build nha.

Màu vàng là đang chạy, đỏ là lỗi, xanh là ok nha.

Sau khi test build xong các thứ mình sẽ có một file này, trong này có chưa file Jar của project nha.

Thêm huy hiệu cho project

Các bạn vào những project lớn sẽ thấy nhưng cái baged tương tư như bên dưới, mình có CI rồi cũng làm một cái cho ngầu nha

Copy toàn bộ đoạn đó, tạo file Readme rồi dán nó vào nha:

Commit để tận hưởng thành quả:

Nhìn ngầu mà đúng không.

Toàn bộ source code của project mình để up lên https://github.com/tanoggy/TestCI/

Tạm kết

Vậy là bài ngày hôm nay, mình đã giải thích cho các bạn những khái niệm về CI/CD cơ bản và setup một CI cơ bản với GitHub Action, hãy làm thử và comment kết quả bên dưới nha. Cám ơn các bạn đã đọc hết bài của mình. Nếu thấy hay đừng ngại rate 5* nha.