Jenkins là gì? Cách cài đặt Jenkins trên Windows

Jenkins là gì? Đối với những kỹ sư và lập trình viên làm việc trong môi trường phát triển chuyên nghiệp, các công cụ hỗ trợ tạo ra các job chạy CI/CD là vô cùng cần thiết. Jenkins là một trong những công cụ như thế. Bài viết này, Vietnix sẽ chia sẻ các kiến thức để tìm hiểu Jenkins và cách cài đặt Jenkins trên Windows đơn giản. Tham khảo ngay dưới đây.

Jenkins là gì?

Jenkins là một phần mềm tự động hóa và là open source được viết bằng Java dùng để tự động thực hiện chức năng tích hợp liên tục (CI – Continuous Integration) và xây dựng các tác vụ tự động hóa. Nó được sử dụng để thực hiện các workflow CI/CD (gọi là các pipelines).

jenkins là gìjenkins là gìJenkins là gì?

Các pipelines tự động hóa quá trình test, report những thay đổi độc lập trong code base lớn. Ngoài ra, nó còn hỗ trợ việc tích hợp các nhánh riêng biệt của code thành một nhánh chính. Pipelines còn liên tục phát hiện các lỗi, build, tự động test, chuẩn bị code base cho việc deploy. Cuối cùng, các code được deploy đến container và máy ảo, cũng như bare metal và các server cloud.

Jenkins giúp tự động hóa các quy trình trong phát triển phần mềm, hiện nay được gọi theo thuật ngữ tích hợp liên tục. Jenkins là một phần mềm dạng server, chạy trên nền serlver với sự hỗ trợ của Apche Tomcat. Nó hỗ trợ hầu hết các phần mềm quản lý mã nguồn phổ biến hiện nay như Git, Maven, Gradle,…

Việc kích hoạt build dự án phần mềm bằng Jenkins có thể thực hiện bằng nhiều cách: dựa trên các lần commit trên mã nguồn theo các khoảng thời gian, kích hoạt qua các URL.

Lịch sử phát triển của Jenkins

Đầu tiên, Jenkins có nguồn gốc từ một phần mềm tên là Hudson. Hudson được tạo vào năm 2004 công ty Sun và được phát hành đầu tiên tại java.net.

Năm 2010, một vấn đề được nảy sinh trong cộng đồng Hudson khi Oracle mua lại Sun. Sau khi Oracle tuyên bố giành thương hiệu và đăng ký nhãn hiệu thì một cuộc biểu quyết kêu gọi đổi tên “Hudson” sang “Jenkins” và đã được phê duyệt.

Lịch sử phát triển của JenkinsLịch sử phát triển của JenkinsLịch sử phát triển của Jenkins qua các năm

Năm 2011 thì Oracle tuyên bố họ vẫn tiếp tục phát triển Hudson và coi Jenkins là một dạng pork (phát sinh) chứ không đổi tên. Và cả Hudson và Jenkins đều tồn tại, mặc dù Jenkins có phần nhỉnh hơn.

Năm 2014, người sáng tạo Kohshuke Kawaguchi trở thành giám đốc công nghệ cho CloudBees (công ty cung cấp các sản phẩm dựa trên nền tảng Jenkins. Đến 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.

Tìm hiểu CI và CD trong Jenkins là gì?

CI- Continuous Integration

CI viết tắt của Continuous Integration là phương pháp phát triển phần mềm yêu cầu các thành viên trong team tích hợp công việc thường xuyên, mỗi ngày ít nhất một lần. Mỗi tích hợp được build tự động (gồm cả test) nhằm mục đihcs phát triển lỗi nhanh chóng. Và nó giúp cho quá trình làm việc được tích hợp và phát triển hiệu quả.

Quy trình làm việc của CI:

  • Tất cả các thành viên trong team dev sẽ bắt đầu pull code từ repo về branch để có thể thực hiện được các yêu cầu chức năng nhất định.
  • Quá trình lập trình và test code để đảm bảo được chất lượng toàn bộ source code.
  • Sau khi thành viên code xong có thể làm việc commit vào branch của team.
  • Sau đó, các thành viên thực hiện cập nhật code mới từ repo về local repo.
  • Merge code sẽ sẽ giải quyết được conflict.
  • Xây dựng và đảm bảo code pass thông qua các tests ở local.
  • Commit code lên repo.
  • Các server CI sẽ theo dõi các thay đổi code từ repository và có thể tự động build/test. Sau đó, sẽ thông báo lại cho các thành viên trong team.

CD – Continuous Delivery

CD viết tắt của Continuous Delivery hay gọi đơn giản “chuyển giao liên tục” là quá trình triển khai tất cả thay đổi trong quá trình tự động test và deloy các code lên các môi trường staging và production. Ngoài ra, CD còn cho phép tự động hóa phần testing bên cạnh việc sử dụng units test. Với mục đích là thử nghiệm phần mềm liên tục để kiểm tra hệ thống trước khi public cho khách hàng.

CI/CD của JenkinsCI/CD của JenkinsCI/CD

Các lỗi được giảm thiểu vì các bước kiểm tra đã được tích hợp vào Jenkins. Jenkins mô tả một trạng thái mong muốn và máy chủ tự động đảm bảo việc thực hiện nó. Ngoài ra, tốc độ release có thể được cải thiện khi mà quá trình deploy không còn bị hạn chế bởi việc giới hạn nhân sự. Cuối cùng, Jenkins giảm thiểu áp lực cho các nhóm phát triển và điều hành. Bởi vì họ không còn phải cho ra sản phẩm của mình vào giữa đêm hay cuối tuần nữa.

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

Sau khi biết được Jenkins là gì và lịch sử phát triển của nó, biết được cách vận hành của Jenkins sẽ giúp chúng ta có cái nhìn sâu hơn về công cụ này. Jenkins chạy như một máy chủ trên nhiều nền tảng khác nhau: Windows, MacOS, Unix và đặc biệt là Linux. Jenkins yêu cầu Java 8 VM trở lên và có thể chạy trên Oracle JRE hay OpenJDK. Thông thường, Jenkins vận hành như một Java servlet trong một máy chủ ứng dụng Jetty. Không những vậy, nó còn có thể chạy trên các ứng dụng Java khác như Apacha Tomcat. Gần đây, Jenkins đã được điều chỉnh để có thể vận hành trong một Docker Container.

Để vận hành Jenkins, các pipeline sẽ được tạo ra. Pipeline là một chuỗi các bước server Jenkins cần thực hiện cho các tác vụ của CI/CD. Chúng được lưu trữ trong một file văn bản Jenkinsfile. Jenkinfiles sử dụng cú pháp ngoặc nhọn, tương tự như JSON. Các bước trong pipline được khai báo dưới dạng câu lệnh có chứa tham số. Chúng được “chứa” trong các dấu ngoặc nhọn “{}”. Sau đó, máy chủ Jenkins đọc các Jenkinsfile và thực hiện các câu lệnh, đẩy mã xuống pipeline từ source code. Một tệp Jenkinsfile có thể được tạo thông qua một GUI hoặc trực tiếp viết code.

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

Như hầu hết mọi phần mềm, Jenkins cũng có những ưu và nhước điểm của nó.

Ưu điểm của Jenkins

  • Có thể được mở rộng bằng cách sử dụng các plugin. Điều này giúp Jenkins có thể thích nghi tốt với những thay đổi trong môi trường CNTT. Đồng thời, plugin cũng giúp Jenkins linh hoạt hơn và cũng phù hợp với hầu hết các môi trường, kể cả các hệ thống phức hợp và đám mây.
  • Với thời gian tồn tại lâu, được triển khai rộng rãi. Do đó, Jenkins được tìm hiểu rõ hơn, có nguồn tài liệu phong phú và cộng đồng to lớn. Điều này giúp Jenkins dễ được kiểm soát, cài đặt và các sự cố cũng được dễ dàng khắc phục.
  • Jenkins cùng với các plugins được xây dựng dựa trên Java – một doanh nghiệp được thẩm định cùng với một hệ sinh thái rộng lớn. Điều này giúp Jenkins có một nền tảng vững chắc với khả năng mở rộng lớn.

Nhược điểm của Jenkins

  • Mặc dù việc cài đặt Jenkins là tương đối đơn giản và dễ dàng. Production lại gây khó khăn cho người dùng và việc phát triển các pipeline bằng Jenkinsfile yêu cầu phải lập trình bằng ngôn ngữ khai báo riêng của nó. Đặc biệt, với các pipeline phức tạp thì việc lập trình, debug và bảo trì là tương đối khó khăn.
  • Hệ thống open source là một kiến trúc máy chủ đơn, giúp cho việc cài đặt trở nên dễ dàng. Tuy nhiên, nó lại giới hạn tài nguyên của máy tính, máy ảo hoặc container.
  • Jenkins không cho phép liên kết giữa các máy chủ nếu nó có thể ảnh hưởng đến hiệu năng. Việc này dẫn đến sự gia tăng số lượng các máy chủ Jenkins độc lập. Từ đó gây khó khăn cho việc quản lý trong một doanh nghiệp lớn.
  • Jenkins dựa trên các kiến trúc, công nghệ Java cũ, đặc biệt là các servlet và Maven. Ngay cả việc cài đặt Jenkins Docker vẫn yêu cầu Jenkins code và phần mềm trung gian servlet phải được gộp chung, duy trì kiến trúc của nó.
  • Ngoài ra, nó không được thiết kế để triển khai các công nghệ Java mới như Spring Boot hay GraalVM.

Các plugins trong Jenkins

Plugin là một cải tiến cho hệ thống Jenkins, được viết bằng Java. Nó giúp mở rộng khả năng của Jenkins và tích hợp Jenkins với các phần mềm khác. Plugin có thể được download từ kho lữu trữ Plugin online của Jenkins. Hiện tại, cộng đồng Jenkins đang có sẵn khoảng 1500 plugins cho từng mục đích sử dụng khác nhau.

plugin jenkinsplugin jenkinsCác plugin Jenkin đề xuất

Sau khi cài đặt, Jenkins cho phép bạn lựa chọn danh sách các plugin mặc định hoặc các plugin của riêng mình. Bạn chỉ cần nhấp vào cài đặt và sẽ được thêm vào Jenkins. Bạn có thể tìm hiểu thêm một số plugin chính thức của Jenkins: Tại đây.

Bảo mật của Jenkins

Bảo mật của Jenkins xoay quanh việc 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ữ của nó, chẳng hạn như máy ảo hay một máy chủ vật lý nào đó, được cấu hình để cho số lượng process kết nối tới nó là ít nhất. Điều này được thực hiện thông qua các 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.

Bên cạnh đó, quyền truy cập vào giao diện UI của Jenkins cũng được hạn chế bằng cách sử dụng xác thực đa yếu tố (Multifactor Authentication).

Bảo mật của JenkinsBảo mật của JenkinsCác tính năng bảo mật của Jenkins

Ngoài ra, Jenkins còn hỗ trợ bảo mật cho cơ sở dữ liệu của người dùng. Các tính năng này được truy cập thông qua Jenkins Web UI. Jenkins hỗ trợ hai lĩnh vực: Bảo mật (Security Realm) – cho phép người điều hành quyết định quyền truy cập vào Jenkins. Trong khi đó, Ủy quyền (Authorization Realm) quy định những người truy cập có thể làm gì.

Kiến thức mở rộng

Jenkins Pipeline

Jenkins Pipeline được định nghĩa là một plugin giúp hỗ trợ triển khai và tích hợp CS dựa theo kiểu pepiline. Quá trình này sẽ bao gồm: Tập hợp các quy trình có tác vụ liên quan với nhau và thực hiện và thực hiện theo thứ tự đã được định sẵn. Khi đó, Jenkins Pipeline được khai báo ngay trên file và được gọi là Jenkinsfile.

Jenkinsfile

Jenkinsfile là thành phần cốt lỗi của Jenkins Pipeline, được viết dựa vào cú pháp DSL với ngôn ngữ chính là Groovy DSL. Và đây được coi là file có cứa các công việc của pepiline sẽ thực hiện. Nó được lưu trữ trên server hoặc ở kho lưu trữ (repository) của Git/Bitbucket.

Jenkins và microservices

Nhu cầu sử dụng Jenkins trở nên đặc biệt cần thiết khi triển khai kiến trúc microservices. Vì một trong những mục tiêu của microservices là thường xuyên cập nhật các ứng dụng và dịch vụ. Để ngày càng có nhiều dịch vụ nhỏ hơn với khoảng thời gian cập nhật nhanh, chức năng tự động hóa của Jenkins là điều không thể thiếu.

Cài đặt Jenkins trên Windows

Ở phần Jenkins là gì? Cũng cho biết là Jenkins chạy bằng Java nên điều đầu tiên là bạn phải cài đặt Java. Sau đó bạn cần cài đặt thêm OpenJDK (Jenkins hiện tại chỉ hỗ trợ JDK8). Khi Java đang chạy bạn có thể cài đặt Jenkins.

  1. Download gói Jenkins tại đây: https://www.jenkins.io/
  2. Giải nén file Jenkins đã tải xuống lúc nãy.

tải jenkinstải jenkinsTải Jenkins trên trang chủ chính thức

3. Nhấp vào “Continue” để bắt đầu cài đặt

cách cài đặt jenkinscách cài đặt jenkinsNhấp next để tiếp tục

4. Nhấp vào tiếp tục “Install” để bắt đầu quá trình cài đặt.

cài đặt jenkins trên windowscài đặt jenkins trên windowsNhấp Install để bắt đầu quá trình cài đặt Jenkins

6. Nhấp “Finish: để hoàn tất quá trình cài đặt Jenkins.

Hướng dẫn cài đặt windows jenkinsHướng dẫn cài đặt windows jenkinsNhấp Finish để hoàn tất

7. Tự động chuyển hướng đến trang Jenkins hoặc bạn có thể truy cập: http: // localhost: 8080 trên trình duyệt.

hướng dẫn cài đặt jenkins trên windowshướng dẫn cài đặt jenkins trên windowsĐiều hướng hoặc truy cập đường dẫn đã đề cập ở trên

8. Mở khóa Jenkins, bạn truy cập theo đường dẫn sau: C: \ Program Files (x86) \ Jenkins \ secret \ initialAdminPassword. Thực hiện copy và dán vào Administrator password như trên hình và nhấp “Continue”.

từng bước cài đặt jenkins trên windowstừng bước cài đặt jenkins trên windowsNhập password

9. Bây giờ, bạn có thể cài đặt các plugin được đề xuất hoặc các plugin bạn thấy phù hợp.

làm cách nào để cài đặt jenkins?làm cách nào để cài đặt jenkins?Cài đặ plugin tích hợp trên Jenkins

10. Chờ các plugin được cài đặt hoàn chỉnh

giúp tôi cài jenkins trên windowsgiúp tôi cài jenkins trên windowsChờ quá trình cài đặt plugin

11. Tạo user cho Jenkins. Và nhập các thông tin cần thiết và thực hiện ” Save and Continue”.

cập nhật quản trị viên jenkinscập nhật quản trị viên jenkinsTạo quản trị viên trên Jenkins

12. Nhấp ” Save and Finish”.

jenkins, cài đặt, windows, mã nguồn mởjenkins, cài đặt, windows, mã nguồn mởNhấp Save and Finish

13. Nhấp ” Start using Jenkins” để khởi động Jenkins.

bắt đầu sử dụng jenkinsbắt đầu sử dụng jenkinsNhấp Start using Jenkins

14. Và xuất hiện giao diện Jenkins và có thể sử dụng.

chào mừng bạn đến với Jenkinschào mừng bạn đến với JenkinsSử dụng Jenkins ngay bây giờ

Lời kết

Qua bài viết về Jenkins là gì? Cũng cho bạn thêm nhiều kiến thức hay và có thể tìm hiểu để sử dụng các công cụ trong quá trình làm việc của cá lập trình viên. Sẽ là rất hiệu quả nếu bạn có kiến thức, thông tin về những công cụ, phần mềm này đảm bảo được công việc sẽ ngày càng phát triển và quy trình được tối ưu hơn. Chúc các bạn thành công.