[CI/CD] Phần 1 – Jenkins là gì? Tìm hiểu chi tiết về Jenkins

1. Jenkins là gì?

Jenkins là một công cụ tự động hóa có mã nguồn mở được viết bằng Java kết hợp với nhiều Plugin, Jenkins có mục đích chính là tích hợp liên tục (hay còn gọi là CI- Continuous Integration). Công cụ này được sử dụng để xây dựng và kiểm tra các dự án phần mềm liên tục, giúp các nhà phát triển tích hợp các thay đổi vào dự án một cách dễ dàng hơn.

Jenkins là gì

Jenkins cũng cho phép bạn liên tục cung cấp phần mềm của mình bằng cách tích hợp với một số lượng lớn các công nghệ thử nghiệm hoặc đã triển khai.

Với Jenkins, các tổ chức có thể đẩy nhanh quá trình phát triển phần mềm thông qua tự động hóa. Jenkins tích hợp các vòng đời phát triển của một quy trình bao gồm xây dựng, tài liệu, thử nghiệm, gói, giai đoạn, triển khai, phân tích tĩnh,…

Jenkins là gì

Bên cạnh đó, các Plugin trong Jenkins cho phép tích hợp các giai đoạn DevOps khác nhau. Nếu bạn muốn tích hợp một công cụ cụ thể, bạn cần cài đặt Plugin cho công cụ đó.

2. Nguồn gốc của Jenkins là gì?

  • Cha đẻ của Jenkins là Kohsuke Kawaguchi – một nhà lập trình viên Java làm việc tại Sun. Ông cảm thấy phiền phức và tốn thời gian khi những mã code liên tục fail khi đưa vào deploy.
  • Để khắc phục tình trạng này, ông đã phát minh ra một phần mềm tên là Hudson với sức năng tự động hóa để phát hiện ra các lỗi sai của code trước khi đưa vào deploy. Hudson trở nên vô cùng thịnh hành và phổ biến trong thời bấy giờ.
  • Khi Sun được Oracle mua lại, Jenkins được forked từ Hudson và phát triển như một phần mềm độc lập. Sau này Jenkins và Hudson tồn tại song song. Tuy vậy nhờ những cải tiến cấp thiết phù hợp với thời đại, Jenkins trở nên phổ biến hơn rất nhiều.

3. Jenkins hoạt động như thế nào?

Jenkins là một ứng dụng dựa trên máy chủ và đòi hỏi phải có một máy chủ web như Apache Tomcat để chạy trên các nền tảng khác nhau như Windows, Linux, macOS, Unix,.. Để sử dụng Jenkins, bạn cần tạo các đường dẫn gồm một loạt các bước mà một máy chủ Jenkins sẽ nhận. Tích hợp liên tục là một công cụ mạnh mẽ bao gồm một bộ công cụ được thiết kế để lưu trữ, giám sát, biên dịch và kiểm tra mã hoặc các thay đổi mã.

  • Máy chủ tích hợp liên tục, ví dụ như: Jenkins, Bamboo, CruiseControl, TeamCity,..
  • Công cụ kiểm soát nguồn, ví dụ như: CVS, SVN, GIT, Mercurial, Perforce, ClearCase và các công cụ khác
  • Công cụ xây dựng, ví dụ như: Make, ANT, Maven, Ivy, Gradle và các công cụ khác
  • Framework kiểm tra tự động hóa, ví dụ như: Selenium, Appium, TestComplete, UFT và những thứ khác

Jenkins hoạt động như thế nào

4. CI và CD trong Jenkins

4.1 CI (Continuous Integration)

CI là viết tắt của Continuous Integration, tạm dịch: Tích hợp liên tục. Đây là một quá trình tích hợp các thay đổi code từ nhiều nhà phát triển trong một dự án. Phần mềm được kiểm tra ngay lập tức sau khi code commit. Với mỗi code commit, code sẽ được tiến hành xây dựng và thử nghiệm. Nếu thử nghiệm được thông qua, bản dựng sẽ được thử nghiệm để triển khai. Nếu việc triển khai thành công, mã sẽ được chuyển sang sản xuất.

Quá trình cam kết, xây dựng, kiểm tra và triển khai này là một quá trình liên tục và do đó mới được gọi là tích hợp/triển khai liên tục.

4.2 CD (Continuous Delivery)

CD là viết tắt của Continuous Delivery, tạm dịch: Chuyển giao liên tục. Đây là quy trình triển khai tất cả thay đổi trong quá trình tự động test và deploy các code lên các môi trường staging và production. Ngoài ra, CD còn hỗ trợ tự động hóa phần testing bên cạnh việc sử dụng units test. Mục đích của CD là thử nghiệm phần mềm liên tục để kiểm tra hệ thống trước khi bàn giao cho khách hàng.

Continuous Delivery la gi

5. Ưu điểm và nhược điểm của Jenkins

5.1 Ưu điểm

  • Jenkins đang được quản lý rất tích cực. Mỗi tháng, công ty phát hành Jenkins sẽ tổ chức các cuộc họp công khai và lấy ý kiến ​​đóng góp từ cộng đồng để phát triển dự án Jenkins.
  • Jenkins đã có khoảng 320 Plugin được xuất bản trong cơ sở dữ liệu Plugin của mình.
  • Công cụ Jenkins cũng hỗ trợ kiến ​​trúc đám mây để bạn có thể triển khai Jenkins trên các nền tảng dựa trên đám mây.
  • Tích hợp với nhiều nền tảng CI/CD và giúp cho team được đồng bộ hóa
  • Rất dễ dàng để tìm ra các lỗi trong Jenkins. Nhà phát triển có thể kiểm tra lỗi và giải quyết chúng nhanh chóng.
  • Rút ngắn thời gian bàn giao dự án và linh hoạt trong công việc
  • Jenkins hỗ trợ các loại kho mã nguồn khác nhau như SVN, Git, v.v. Nhà phát triển có thể đặt các trình kích hoạt khác nhau sau khi thực hiện các thay đổi trong mã.

5.2 Nhược điểm

  • Giao diện của Jenkins đã lỗi thời và không thân thiện với người dùng so với xu hướng hiện tại.
  • Việc quản lý bảng điều khiển Jenkins khá khó khăn khi chúng ta có quá nhiều công việc phải thực hiện.
  • Việc bảo trì Jenkins không dễ dàng vì phần mềm này chạy trên một máy chủ và yêu cầu một số kỹ năng như quản trị viên máy chủ để giám sát hoạt động của nó.
  • Gặp một số khó khăn trong việc cài đặt và cấu hình Jenkins.
  • Bạn phải tự mình bảo trì cơ sở hạ tầng.
  • Tích hợp liên tục thường xuyên bị hỏng do một số thay đổi nhỏ trong cài đặt.
  • Các thay đổi do một nhà phát triển thực hiện sẽ được không hiển thị với một nhà phát triển khác trong nhóm và chỉ có người quản lý mới có quyền truy cập. Điều này làm cho việc theo dõi dự án lớn gặp khó khăn.
nhuoc diem jenkins
Bài tiếp theo chúng ta sẽ tìm hiểu cách Cài đặt và cấu hình Jenkins trên CentOS 7 như thế nào.

Bài viết này hữu ích như thế nào?

Hãy bấm vào ngôi sao để đánh giá!

Đánh giá trung bình 5 / 5. Số phiếu bầu: 25