Lập trình hiện đại cho phép nhà phát triển thực hiện các tác vụ như lấy code mới nhất, build, deploy,..một cách tự động hóa và bỏ qua các bước thủ công như trước đây. Để làm được như vậy, họ phải cần một số phần mềm chuyên dụng, điển hình là Jenkins. Vậy Jenkins là gì? Các bạn hãy tham khảo bài viết dưới đây để hiểu rõ hơn về Jenkins nhé!
Jenkins là gì?
Khái niệm Jenkins
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 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,…
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ụ đó.
Lịch sử ra đời của phần mềm Jenkins
Dự án Jenkins được bắt đầu vào năm 2004 bởi Kohsuke Kawaguchi, khi ông đang làm việc cho Sun Microsystems. Kohsuke là một nhà phát triển tại Sun và cảm thấy mệt mỏi khi phải hứng chịu các cơn thịnh nộ của nhóm mình mỗi khi code của anh ta thất bại.
Kohsuke đã tạo ra Jenkins như một cách để thực hiện tích hợp liên tục. Sau đó, Kohsuke đã mở nguồn và tạo ra dự án Jenkins. Chẳng bao lâu sau, việc sử dụng Jenkins đã lan rộng khắp thế giới. Bản Jenkins đầu tiên được phát hành vào tháng 2 năm 2005.
Sau khi Oracle mua lại Sun Microsystems, cộng đồng Hudson đã chấp thuận những đề xuất để tạo ra dự án Jenkins. Vào tháng 2 năm 2011, Hudson đã được tách ra thay vì đổi tên thành Jenkins.
Mặc dù Hudson và Jenkins được phát triển độc lập, Jenkins lại có được nhiều dự án và cộng tác viên hơn Hudson. Do đó, Hudson đã không còn được cộng đồng duy trì.
Đến năm 2014, Kawaguchi đã trở thành CTO của CloudBees, một công ty chuyên cung cấp các sản phẩm dựa trên chính nền tảng Jenkins.
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
CI và CD trong Jenkins
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.
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.
Ưu điểm và nhược điểm của Jenkins
Ư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ã.
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.
Hướng dẫn cách cài đặt Jenkins
Bước 1: Download Jenkins tại đây
Bước 2: Giải nén file Jenkins đã tải xuống
Bước 3: Thực hiện các thao tác để cài đặt
Bước 4: Tự động chuyển hướng đến trang Jenkins hoặc bạn cũng có thể truy cập tại đây.
Bước 5: Để mở khóa Jenkins, bạn hãy truy cập theo đường dẫn sau: C: \ Program Files (x86)\Jenkins\secret\initialAdminPassword. Sau đó copy và dán vào Administrator password như trên hình rối nhấp “Continue”.
Bước 6: Bạn có thể bắt đầu cài đặt các Plugin cho Jenkins
Bước 7: Tạo user và nhập các thông tin cần thiết sau đó chọn Save and Continue -> Save and Finish -> Start using Jenkins
Bước 8: Sau khi hoàn tất thiết lập, bạn có thể truy cập vào giao diện chính của Jenkins
Tóm lại, Jenkins là một công cụ tuyệt vời để các nhà phát triển thực hiện công việc lập của mình một cách nhanh chóng và hiệu quả hơn. Bài viết đã giới thiệu một số thông tin về Jenkins, bạn hãy tham khảo để sử dụng nhé!
FAQs về Jenkins
Bảo mật của Jenkins là gì?
Bảo mật của Jenkins chủ yếu là bảo vệ các máy chủ và người dùng. Quyền truy cập vào nơi lưu trữ như máy ảo hay một máy chủ vật lý nào đó sẽ được cấu hình sao cho số lượng process kết nối tới nó là ít nhất. Điều này sẽ được thực hiện thông qua một số tính năng của hệ điều hành và các tính năng bảo mật kết nối mạng.
Ngoài ra, quyền truy cập vào giao diện UI của Jenkins được hạn chế bằng cách sử dụng bảo mật xác thực đa yếu tố (Multifactor Authentication).
Làm sao đảm bảo cơ sở dữ liệu Jenkins an toàn?
Với Jenkins, có nhiều cách để đảm bảo an ninh ở mức cao nhất, nhưng một cách đáng chú ý nhất là chạy kiểm tra bảo mật, giữ an ninh toàn cầu, giữ cho cơ sở dữ liệu được bảo vệ ở mức vật lý (tránh người tiếp cận trái phép),..
Có nên sử dụng Jenkins cùng với Selenium không?
Bạn có thể sử dụng kết hợp hai công cụ này chúng sẽ đem lại những lợi ích nhất định. Khi kết hợp như vậy, việc chạy thử nghiệm sẽ được diễn ra ngay lập tức mỗi khi chương trình của bạn có thay đổi hoặc chỉnh sửa.
Pipeline là gì?
Thuật ngữ “pipeline” thường được sử dụng để mô tả quá trình từ các giai đoạn đầu tiên của một dự án đến khi phát hành ra công chúng.