Jenkins là gì? Thông tin cơ bản về Jenkins

5 min read

Chắc hẵn ai trong chúng ta cũng từng nghe qua khái niệm Jenkins. Bài viết hôm nay sẽ giúp chúng ta nắm được một vài thông tin cơ bản về Jenkins nhé!

Khái niệm cơ bản về Jenkins

Jenkins là một máy chủ Tích hợp liên tục mã nguồn mở được viết bằng Java để điều phối một chuỗi hành động nhằm đạt được quy trình Tích hợp liên tục theo cách tự động. Jenkins hỗ trợ vòng đời phát triển hoàn chỉnh của phần mềm từ xây dựng, thử nghiệm, lập tài liệu cho phần mềm, triển khai và các giai đoạn khác của vòng đời phát triển phần mềm. Jenkins là một ứng dụng được sử dụng rộng rãi trên toàn thế giới với khoảng 300 nghìn lượt cài đặt và đang tăng lên từng ngày.

Bằng cách sử dụng Jenkins, các công ty phần mềm có thể đẩy nhanh quá trình phát triển phần mềm của họ vì Jenkins có thể tự động hóa quá trình xây dựng và thử nghiệm với tốc độ nhanh chóng. Nó là một ứng dụng dựa trên máy chủ và yêu cầu một máy chủ web như Apache Tomcat. Lý do phần mềm Jenkins trở nên phổ biến là vì tính năng giám sát các nhiệm vụ lặp đi lặp lại phát sinh trong quá trình phát triển dự án. Ví dụ: nếu nhóm của bạn đang phát triển một dự án, Jenkins sẽ liên tục kiểm tra các bản dựng dự án của bạn và chỉ cho bạn các lỗi trong giai đoạn đầu phát triển.

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

Jenkins là một ứng dụng dựa trên máy chủ và yêu cầu một máy chủ web như Apache Tomcat để chạy trên nhiều nền tảng khác nhau như Windows, Linux, macOS, Unix, v.v.

Để sử dụng Jenkins, bạn cần tạo các quy trình bao gồm một loạt các bước mà máy chủ Jenkins thực hiện sẽ mất. Đường ống tích hợp liên tục của Jenkins 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 thay đổi mã, như:

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

Lịch sử ra đời của Jenkins

Jenkins có nguồn gốc từ dự án phần mềm tên là Hudson. Hudson được tạo vào đầu mùa hè năm 2004 ở công ty Sun. Nó được phát hành đầu tiên trong java.net vào tháng 2 năm 2005.[6]

Khoảng năm 2007, Hudson được biết đến như một lựa chọn tốt hơn so với phần mềm CruiseControl và các phần mềm nguồn mở dạng build-server. Tại hội nghị JavaOne tháng 5 năm 2008, phần mềm Hudson thắng giải Duke’s Choice Award trong mục Developer Solutions.

Trong tháng 11 năm 2010, một vấn đề nảy sinh trong cộng đồng phát triển Hudson khi nhiều nghi vấn về sự quản lý và kiểm soát bởi Oracle. Đàm phán giữa các nhà đóng góp và Oracle đã diễn ra, và mặc dù đã có nhiều thỏa thuận nhưng họ vẫn chưa giải quyết được về thương hiệu “Hudson”, sau khi Oracle tuyên bố sẽ giành tên thương hiệu và áp dụng đăng ký nhãn hiệu vào tháng 12 năm 2010. Kết quả là, vào tháng 11 năm 2011, một cuộc biểu quyết kêu gọi đổi tên từ “Hudson” sang “Jenkins”. Đề nghị được phê duyệt bởi cộng đồng sau khi bỏ phiếu vào ngày 29 năm 2011, tạo ra dự án Jenkins.

Vào ngày 1 tháng hai, năm 2011, Oracle nói rằng họ có thể tiếp tục phát triển Hudson, và coi Jenkins là một dạng fork (phát sinh) chứ không phải sự đổi tên. Jenkins và Hudson do đó có thể như hai dự án phát triển độc lập, mỗi bên đều tuyên bố người kia là fork. Tới tháng 12 năm 2013, Jenkins trên GitHub đã có 567 thành viên, hơn 1.100 kho (repository) công cộng, so với Hudson chỉ có 32 thành viên và 17 kho công cộng.

Vào năm 2011, người sáng tạo Kohsuke Kawaguchi nhận được một giải thường từ GoogleO ‘ Reilly Mở Nguồn cho công việc của mình trên Hudson/Jenkins. Trong năm 2014, Kawaguchi trở thành Giám đốc công Nghệ cho CloudBees.

Vào ngày 20 tháng 4 năm 2016, phiên bản Jenkins 2 đã được phát hành với tính năng Pipeline. Các plugin cho phép viết mã dựa theo Apache Groovy.

Ưu điểm của việc sử dụng Jenkins

Jenkins là được quản lý bởi cộng đồng rất cởi mở. Hàng tháng, họ tổ chức các cuộc họp công khai và lấy ý kiến ​​đóng góp của công chúng để phát triển dự án Jenkins. Cho đến nay, khoảng 280 vé đã được đóng và dự án xuất bản bản phát hành ổn định ba tháng một lần. Khi công nghệ phát triển, Jenkins cũng vậy. Cho đến nay Jenkins có khoảng 320 plugin được xuất bản trong cơ sở dữ liệu plugin của mình. Với các plugin, Jenkins càng trở nên mạnh mẽ hơn và giàu tính năng hơn. Công cụ Jenkins cũng hỗ trợ kiến ​​trúc dựa trên đám mây để bạn có thể triển khai Jenkins trên nền tảng dựa trên đám mây. Lý do khiến Jenkins trở nên phổ biến là vì nó được nhà phát triển tạo ra dành cho nhà phát triển.

Nhược điểm của việc sử dụng Jenkins

Mặc dù Jenkins là một công cụ rất mạnh nhưng nó cũng có những nhược điểm. Giao diện của nó đã lỗi thời và không thân thiện với người dùng so với xu hướng UI hiện tại. Mặc dù Jenkins được nhiều nhà phát triển yêu thích nhưng việc duy trì nó không phải là điều dễ dàng vì Jenkins chạy trên máy chủ và yêu cầu một số kỹ năng của quản trị viên máy chủ để giám sát hoạt động của nó. Một trong những lý do khiến nhiều người không triển khai Jenkins là do nó gặp khó khăn trong việc cài đặt và cấu hình Jenkins. Tích hợp liên tục thường xuyên bị gián đoạn do một số thay đổi cài đặt nhỏ. Quá trình tích hợp liên tục sẽ bị tạm dừng và do đó cần có sự chú ý của nhà phát triển.

Nguồn tham khảo: https://www.guru99.com/jenkin-continuous-integration.html

Avatar photo

Clean Code: Nguyên tắc viết hàm trong lập trình…

Trong quá trình phát triển phần mềm, việc viết mã nguồn dễ đọc, dễ hiểu là yếu tố then chốt để đảm bảo code...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc comment trong lập trình

Trong lập trình, code không chỉ là một tập hợp các câu lệnh để máy tính thực thi, mà còn là một hình thức...
Avatar photo Dat Tran Thanh
3 min read

Clean Code: Nguyên tắc xử lý lỗi (Error Handling)

Trong quá trình phát triển phần mềm, việc xử lý lỗi không chỉ là một phần quan trọng mà còn ảnh hưởng trực tiếp...
Avatar photo Dat Tran Thanh
4 min read

Leave a Reply

Your email address will not be published. Required fields are marked *