Jenkins là gì? Tổng hợp kiến thức về Jenkins nên nắm rõ

0
190

Với những người dùng đang tìm hiểu về các tác vụ tự động hóa thì không thể không bỏ qua khái niệm Jenkins là gì? Nếu như bạn cũng đang muốn tìm hiểu về định nghĩa này thì đừng bỏ qua những thông tin mà ITNavi giới thiệu trong bài viết sau. 

Định nghĩa Jenkins là gì?

Jenkins được định nghĩa là  một opensource được sử dụng để thực hiện các chức năng được tích hợp liên tục (nó còn được gọi là CI- Continuous Integration) và có thể xây dựng các tác vụ dạng tự động hóa. 

Nó được tích hợp hầu hết các source code của những members trong team sẽ nhanh chóng một cách liên tục, theo dõi sự thực thi và các trạng thái thông qua các bước kiểm thử. Việc này đều sẽ giúp cho sản phẩm chạy được ổn định hơn. 

Jenkins là gì?

Jenkins là gì?

Quá trình hình thành Jenkins là gì? 

Kohsuke Kawaguchi là một lập trình viên Java cảm thấy mệt mỏi vì các mã nguồn của mình bị fail. Chính vì thế, ông rất muốn tìm cách biết trước khi đưa code vào deploy để liệu xem rằng code có thể hoạt động được hay không.

Chính vì vậy, ông đã xây dựng một hệ thống server tự động hóa cho chính server. Khi đó, Java có thể kiểm tra được tình trạng code trước khi deploy và được gọi là Hudson. Hudson được dùng phổ biến tại Sun và rất thịnh hành trong các công ty khác dưới opensource. 

Vào năm 2011, thì Oracle đã mua lại Sun để có thể gây nên sự tranh chấp với các cộng đồng nguồn mở. Khi đó, Jenkins được forked từ Hudson sau đó. Cả Hudson và Jenkins đều tiếp tục tồn tại và mặc dù thì Jenkins có phần phổ biến hơn rất nhiều. 

Đến năm 2014, thì Kawaguchi đã trở thành CTO của CloudBees, một công ty sẽ cung cấp mỗi sản phẩm dựa trên chính nền tảng Jenkins. 

Bạn đọc tham khảo thêm: IDE là gì? Kiến thức cần nắm vững về IDE dành cho Developer

Tìm hiểu về CI và CD trong Jenkins

Về CI

CI là tên viết tắt của Continuous Integration và nó là tích hợp liên tục nhằm liên tục tích hợp các source code của những thành viên có trong team lại một cách nhanh chóng hơn. 

Trong đó, chu trình làm việc của nó như sau: 

  • Các thành viên ở trong team dev sẽ bắt đầu pull code mới nhất 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 để có thể đảm bảo được mọi chất lượng với chức năng cũng như toàn bộ source code. 
  • Các thành viên code xong thì sẽ làm cho việc commit vào branch develop của team. 
  • Các thành viên sẽ cập nhật code mới ngay từ repo về local repo.
  • Merge code sẽ giải quyết được conflict. 
  • Build và chú trọng đảm bảo code pass thông qua các tests ở dưới local. 
  • Commit code lên repo. 
  • Các máy chủ CI sẽ lắng nghe các thay đổi code từ repository và có thể tự động build/test. Sau đó, đưa ra những thông báo lại cho các thành viên. 

CI trong Jenkins là gì?

CI trong Jenkins là gì?

Về CD

CD là tên viết tắt của Continuous Delivery: Nó là chuyển giao liên tục cũng như tập hợp các kỹ thuật giúp kiểm tra tích cực source code trên chính môi trường staging. 

Với cách như thế này thì bạn có thể đảm bảo rằng source code được review, quá trình kiểm thử một cách tỉ mỉ trước khi deploy lên với môi trường production. 

Cách thức hoạt động của Jenkins là gì?

Jenkins sẽ được cung cấp các gói lưu trữ Java 8 WAR và những gói cài đặt cho các hệ điều hành phổ biến ở dưới dạng Homebrew, với hình ảnh Docker và mã nguồn. Và, mã nguồn chủ yếu ở đây là Java, gồm một vài tệp Croovy, Ruby và Antlr. 

Khi đó, bạn có thể độc lập chạy jenkins War hoặc dưới dạng một servlet trong máy chủ của ứng dụng Java như Tomcat. Trong cả hai trường hợp này thì Jenkins sẽ tạo ra một giao diện cho người dùng web và chấp nhận cho các cuộc gọi đến API Rest. 

Khi bạn chạy Jenkins lần đầu tiên, khi đó chương trình này sẽ tạo một tài khoản quản trị với các mật khẩu ngẫu nhiên khá dài. Bạn hoàn toàn có thể paste mật khẩu này vào webpage ban đầu là có thể unlock của trình cài đặt. 

Để  có thể vận hành được Jenkins thì các pipeline sẽ được tạo ra, và Pipeline là một trong những chuỗi các bước server Jenkins cần thực hiện cho những tác vụ của CI/CD. Chúng đều được lưu trữ sẵn trong một file văn bản Jenkinsfile. Khi đó, Jenkinsfile sẽ suwr dụng cú pháp ngoặc nhọn, khá giống với JSON. Đây là bước trong pipline được khai báo ở dưới dạng câu lệnh có chứa tham số. 

Khi đó, chúng sẽ chứa trong dấu ngoặc nhọn {}, sau đó, thì máy chủ Jenkins đọc các Jenkinsfile và được thực hiện với các câu lệnh cũng như đẩy mã xuống pipeline từ source code. Mỗi một tệp Jenkinsfile đó đều có thể được tạo ra thông qua một GUI hoặc được trực tiếp viết code. 

Các Plugin trong Jenkins là gì?

Sau khi đã cài đặt, Jenkins cho phép bạn hoặc là lựa chọn danh sách plugin mặc định hoặc là lựa chọn plugin của riêng chính mình. 

Khi bạn đã lựa chọn với bộ plugin ban đầu của mình thì chỉ cần nhấp vào nút cài đặt và Jenkins sẽ được thêm vào chúng. Với màn hình chính Jenkins hiển thị các build queue hiện tại, thì trạng thái executor cung cấp cho các liên kết để tạo ra các mục mới, quản lý cho người dùng, xem lại lịch sử xây dựng, chế độ xem tùy chỉnh, quản lý cho Jenkins và quản lý các thông tin đăng nhập. 

Jenkins được sử dụng ngày càng phổ biến

Jenkins được sử dụng ngày càng phổ biến

Với một mục Jenkins mới thì nó có thể là bất kỳ kiểu công việc nào trong sáu loại cộng thêm một thư mục để có thể sắp xếp lại các mục ở bên trong.

Sẽ có 18 thao tác mà bạn có thể dùng để trang Manage Jenkins, nó thường bao gồm các tùy chọn mở giao diện dòng lệnh. Tuy nhiên, bạn hoàn toàn có thể cân nhắc lại các pipeline và các quy trình công việc để nâng cao được xác định của các script. 

Kiến thức mở rộng: Jenkins pipeline và Jenkinsfile

Jenkins Pipeline là gì?

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

Jenkinsfile là gì?

Jenkinsfile được định xem là phần “lõi” của Jenkins Pipeline, nó thường được viết dựa vào cú pháp DSL với các ngôn ngữ chính là: Groovy DSL. Đây là tập tin có chứa danh sách những công việc mà pipeline sẽ thực hiện. Nó được lưu trữ ở trên server Jenkins hoặc ở trên repository của git/Bitbucket. 

Bộ phận Jenkinsfile này sẽ được thực hiện với các tác vụ như: 

  • Thiết lập sẵn các biến của môi trường. 
  • Pull code từ git repo đã được chỉ định sẵn. 
  • Thiết lập Jenkins workspace. 
  • Thực thi các đoạn script đã được chỉ định sẵn. 
  • Sau khi thực hiện xong thì nó có nhiệm vụ dọn dẹp cho workspace. 

Và, các nội dung có chưa trong Jenkinsfile sẽ bao gồm: 

  • Trường pipeline{} là một thành phần bắt buộc được sử dụng để có thể khai báo pipeline ở trong jenkinsfile. 
  • Trường agent được sử dụng để khai báo cho môi trường được thực hiện, nếu như cấu hình là any thì Jenkins có thể sử dụng được bất kỳ agent nào đang hiện có ở trên hệ thống. 
  • Với trường environment{}, thì nó được sử dụng để thực hiện khai báo cho các biến môi trường cần thiết nhất. 
  • Trường stages {} chuyên sử dụng để khai báo những giai đoạn con có bên trong pipeline. 
  • Trường post{}, nó sẽ được dùng để thực thi ngay sau khi các stage hoàn tất được các công việc đã được chỉ định. Trong Jenkinsfile trên, sau khi các stage đã thực hiện workspace thì sẽ được xóa để tránh cho jenkins không bị lỗi trong lần thực thi pipeline tiếp theo. \

Cách thức hoạt động của Jenkins

Cách thức hoạt động của Jenkins

Nhược điểm của Jenkins là gì?

Mặc dù cài đặt Jenkins khá dễ dàng và đơn giản nhưng production lại gây những khó khăn cho người sử dụng. Bởi vậy, việc triển khai pipeline bằng Jenkinsfile sẽ đòi hỏi phải lập trình bằng các ngôn ngữ khai báo riêng của nó. 

Hệ thống open source là một trong những kiến trúc đơn máy chủ, nó sẽ giúp cho việc cài đặt trở nên dễ dàng hơn. Mặc dù vậy, nó có thể giới hạn được tài nguyên của máy tính, máy ảo hoặc container. Khi đó, Jenkins lại không cho phép liên kết giữa những máy chủ nếu như nó có thể gây ảnh hưởng đến hiệu năng. 

Jenkins thường hoạt động dựa vào các kiến trúc, công nghệ Java cũ và đặc biệt là các servlet và Maven. 

Tổng kết

Trong bài viết này, ITNavi đã tổng hợp toàn bộ mọi thông tin liên quan đến Jenkins. Hy vọng, sau khi tham khảo các kiến thức này thì bạn đọc đã có thể hiểu rõ hơn Jenkins là gì cũng như biết được cách thức hoạt động của nó. 

LEAVE A REPLY

Please enter your comment!
Please enter your name here