Jenkins là gì? Công cụ tích hợp liên tục (CI)

Mục lục:

Anonim

Jenkins là gì?

Jenkins là một máy chủ Tích hợp liên tục mã nguồn mở có khả năng sắp xếp một chuỗi hành động giúp đạt được quy trình Tích hợp liên tục (và không chỉ) theo cách tự động.

Jenkins miễn phí và hoàn toàn được viết bằng Java. Jenkins là một ứng dụng được sử dụng rộng rãi trên khắp thế giới với khoảng 300 nghìn lượt cài đặt và đang phát triển từng ngày.

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 Jenkins trở nên nổi tiếng là do nó theo dõi các nhiệm vụ lặp đi lặp lại phát sinh trong quá trình phát triển một 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 xây dựng dự án của bạn và chỉ cho bạn những lỗi trong giai đoạn đầu của quá trình phát triển của bạn.

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 việc xây dựng và thử nghiệm với tốc độ nhanh chó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 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.

Trong hướng dẫn này, bạn sẽ học

  • Jenkins là gì?
  • Tích hợp liên tục là gì?
  • Lịch sử Jenkin
  • Tại sao sử dụng Tích hợp liên tục với Jenkins?
  • Nghiên cứu điển hình trong thế giới thực về Tích hợp liên tục
  • Ưu điểm của việc sử dụng Jenkins
  • Nhược điểm của việc sử dụng Jenkins

Tích hợp liên tục là gì?

Trong Tích hợp liên tục sau khi cam kết mã, phần mềm được xây dựng và thử nghiệm ngay lập tức. Trong một dự án lớn với nhiều nhà phát triển, các cam kết được thực hiện nhiều lần trong ngày. Với mỗi mã cam kết được 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. 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 đó có tên là tích hợp / triển khai liên tục.

Đường ống 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ịchkiểm tra mã hoặc các thay đổi mã, như:

  • Máy chủ tích hợp liên tục (Jenkins, Bamboo, CruiseControl, TeamCity và những người 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à những thứ khác)

Lịch sử Jenkin

  • Kohsuke Kawaguchi, một nhà phát triển Java, làm việc tại SUN Microsystems, cảm thấy mệt mỏi với việc xây dựng mã và sửa lỗi lặp đi lặp lại. Năm 2004, tạo ra một máy chủ tự động hóa có tên là Hudson để tự động hóa tác vụ xây dựng và thử nghiệm.
  • Vào năm 2011, Oracle sở hữu Sun Microsystems đã có tranh chấp với cộng đồng mã nguồn mở Hudson, vì vậy họ đã tách Hudson và đổi tên nó thành Jenkins.
  • Cả Hudson và Jenkins vẫn tiếp tục hoạt động độc lập. Nhưng trong một khoảng thời gian ngắn, Jenkins đã có được rất nhiều dự án và những người đóng góp trong khi Hudson chỉ còn lại với 32 dự án. Cùng với thời gian, Jenkins trở nên nổi tiếng hơn, và Hudson không còn được duy trì nữa.

Tại sao sử dụng Tích hợp liên tục với Jenkins?

Một số người có thể nghĩ rằng cách phát triển phần mềm kiểu cũ là cách tốt hơn. Hãy cùng Jenkins tìm hiểu những ưu điểm của CI với ví dụ sau

Chúng ta hãy tưởng tượng, có khoảng 10 nhà phát triển đang làm việc trên một kho lưu trữ được chia sẻ. Một số nhà phát triển hoàn thành nhiệm vụ của họ trong 25 ngày trong khi những nhà phát triển khác mất 30 ngày để hoàn thành.

Trước Jenkins Sau Jenkins
Sau khi tất cả các Nhà phát triển đã hoàn thành các nhiệm vụ mã hóa được giao, họ sử dụng đồng thời xác nhận mã của mình. Sau đó, Build được thử nghiệm và triển khai. Mã cam kết được xây dựng và chu kỳ kiểm tra rất ít thường xuyên và một lần xây dựng đã được thực hiện sau nhiều ngày. Mã được xây dựng và kiểm tra ngay sau khi Nhà phát triển cam kết mã. Jenkin sẽ xây dựng và kiểm tra mã nhiều lần trong ngày Nếu xây dựng thành công thì Jenkins sẽ triển khai mã nguồn vào máy chủ thử nghiệm và thông báo cho nhóm triển khai. Nếu quá trình xây dựng không thành công, Jenkins sẽ thông báo lỗi cho nhóm nhà phát triển.
Vì mã được tạo cùng một lúc, một số nhà phát triển sẽ cần đợi cho đến khi các nhà phát triển khác hoàn thành mã để kiểm tra bản dựng của họ Mã được xây dựng ngay lập tức sau bất kỳ cam kết nào của Nhà phát triển.
Việc cô lập, phát hiện và sửa lỗi cho nhiều lần cam kết không phải là một nhiệm vụ dễ dàng. Vì mã được tạo sau mỗi lần cam kết của một nhà phát triển, nên thật dễ dàng để phát hiện mã của ai đã khiến quá trình xây dựng bị lỗi
Quá trình xây dựng và kiểm tra mã hoàn toàn thủ công, vì vậy có rất nhiều khả năng thất bại. Quá trình xây dựng và kiểm tra tự động giúp tiết kiệm thời gian và giảm thiểu các khuyết tật.
Mã được triển khai sau khi tất cả các lỗi được sửa và kiểm tra. Mã được triển khai sau mỗi lần xây dựng và thử nghiệm thành công.
Chu kỳ phát triển chậm Chu kỳ phát triển là nhanh chóng. Các tính năng mới sẵn có hơn cho người dùng. Tăng lợi nhuận.

Nghiên cứu điển hình trong thế giới thực về Tích hợp liên tục

Tôi chắc rằng tất cả các bạn đều biết đến điện thoại Nokia cũ. Nokia đã từng thực hiện một quy trình gọi là xây dựng hàng đêm. Sau nhiều cam kết từ các nhà phát triển khác nhau trong ngày, phần mềm được xây dựng hàng đêm. Vì phần mềm chỉ được xây dựng một lần trong ngày nên việc cô lập, xác định và sửa lỗi trong một cơ sở mã lớn là một điều rất khó khăn.

Sau đó, họ đã áp dụng cách tiếp cận Tích hợp liên tục. Phần mềm được xây dựng và thử nghiệm ngay sau khi một nhà phát triển cam kết mã. Nếu bất kỳ lỗi nào được phát hiện, nhà phát triển tương ứng có thể nhanh chóng sửa chữa lỗi đó.

Jenkins Plugins

Theo mặc định, Jenkins đi kèm với một số tính năng hạn chế. Nếu bạn muốn tích hợp cài đặt Jenkins của mình với các công cụ kiểm soát phiên bản như Git, thì bạn cần cài đặt các plugin liên quan đến Git. Trên thực tế, để tích hợp với các công cụ như Maven, Amazon EC2, bạn cần cài đặt các plugin tương ứng trong Jenkins của mình.

Tích hợp plugin trong Jenkins

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

  • Jenkins đang đượ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 từ công chúng để phát triển dự án Jenkins.
  • Cho đến nay, khoảng 280 vé đã được đóng và dự á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 thậm chí còn trở nên mạnh mẽ hơn và nhiều tính năng hơn.
  • Jenkins cũng hỗ trợ kiến ​​trúc dựa trên đám mây để bạn có thể triển khai Jenkins trong các nền tảng dựa trên đám mây.
  • Lý do tại sao Jenkins trở nên phổ biến là nó được tạo ra bởi một nhà phát triển dành cho các 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ó những sai sót.

  • 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 giao diện người dùng 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 dễ dàng như vậy vì Jenkins 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ó.
  • Một trong những lý do tại sao nhiều người không triển khai Jenkins là do nó khó cài đặt và cấu hình Jenkins.
  • Tích hợp liên tục thường xuyên bị hỏng do một số thay đổi cài đặt nhỏ. Tích hợp liên tục sẽ bị tạm dừng và do đó cần một số nhà phát triển chú ý.

Phần kết luận:

  • Trong Tích hợp liên tục, sau khi cam kết mã, phần mềm được xây dựng và thử nghiệm ngay lập tức
  • Jenkins là một máy chủ Tích hợp liên tục mã nguồn mở có khả năng sắp xếp một chuỗi hành động
  • Trước Jenkins, khi tất cả các Nhà phát triển đã hoàn thành các nhiệm vụ mã hóa được giao, họ thường cam kết mã của họ cùng một lúc. Sau đó, Build được thử nghiệm và triển khai.
  • Sau khi Jenkins, mã được xây dựng và kiểm tra ngay khi Nhà phát triển cam kết mã. Jenkin sẽ xây dựng và kiểm tra mã nhiều lần trong ngày
  • Theo mặc định, Jenkins đi kèm với một số tính năng hạn chế. Nếu bạn muốn tích hợp cài đặt Jenkins của mình với các công cụ kiểm soát phiên bản như Git, thì bạn cần cài đặt các plugin liên quan đến Git
  • Ưu điểm lớn nhất của Jenkins là nó được quản lý bởi cộng đồng, tổ chức các cuộc họp công khai và lấy ý kiến ​​đóng góp từ công chúng để phát triển các dự án Jenkins
  • Nhược điểm lớn nhất của Jenkin là 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 giao diện người dùng hiện tại.