Jenkins là một công cụ mã nguồn mở hỗ trợ tự động hóa quy trình tích hợp và triển khai phần mềm (CI/CD). Nhờ Jenkins, các nhóm phát triển có thể giảm thiểu lỗi thủ công, đẩy nhanh tiến độ release và cải thiện chất lượng phần mềm. Trong bài viết này, mình sẽ hướng dẫn bạn cách cài đặt và cấu hình Jenkins một cách dễ hiểu, phù hợp cho cả người mới bắt đầu.
Những điểm chính
- Khái niệm và vai trò: Hiểu rõ Jenkins là gì, tại sao công cụ này lại đóng vai trò trung tâm trong quy trình CI/CD hiện đại.
- Lịch sử phát triển: Biết được quá trình hình thành và phát triển của Jenkins để hiểu vì sao nó vẫn được ưa chuộng cho đến hiện tại.
- CI/CD trong Jenkins: Nắm rõ nguyên lý hoạt động của Continuous Integration và Continuous Delivery, cũng như cách Jenkins hỗ trợ tự động hóa toàn bộ quy trình phát triển phần mềm.
- Cơ chế hoạt động của Jenkins: Hiểu cách Jenkins vận hành, từ vai trò của Jenkins Controller đến Jenkins Agent, cũng như khả năng triển khai trên nhiều nền tảng.
- Ưu nhược điểm: Biết được điểm mạnh và hạn chế của Jenkins để quyết định có nên sử dụng công cụ này cho dự án hay không.
- Plugins và khả năng mở rộng: Nắm được cách Jenkins sử dụng plugin để mở rộng tính năng, đáp ứng đa dạng nhu cầu triển khai.
- Bảo mật: Hiểu các cơ chế bảo mật trong Jenkins nhằm đảm bảo an toàn cho hệ thống và dữ liệu.
- Kiến thức nâng cao: Làm quen với Jenkins Pipeline, Jenkinsfile và cách áp dụng Jenkins trong hệ thống microservices.
- Cài đặt và cấu hình: Biết cách cài đặt Jenkins trên Windows và Linux, cũng như từng bước cấu hình CI và CD cơ bản cho người mới bắt đầu.
- Biết thêm: Vietnix là đơn vị cung cấp dịch vụ VPS tốc độ cao, phù hợp để triển khai Jenkins trong môi trường ổn định và linh hoạt.
- Câu hỏi thường gặp: Tổng hợp các thắc mắc phổ biến giúp bạn giải quyết nhanh các vấn đề khi sử dụng Jenkins.
Jenkins là gì?
Jenkins là một công cụ mã nguồn mở hỗ trợ tích hợp liên tục (CI) và tự động hóa quy trình phát triển phần mềm. Nó cho phép nhóm phát triển dễ dàng tích hợp mã nguồn từ nhiều thành viên, thực hiện các bước kiểm thử như unit test, integration test và theo dõi trạng thái build. Mục tiêu chính là đảm bảo phần mềm luôn ổn định và sẵn sàng triển khai.

Để triển khai Jenkins hiệu quả trong môi trường CI/CD, việc lựa chọn một hạ tầng máy chủ ổn định và hiệu năng cao là yếu tố quan trọng. VPS Linux là lựa chọn tối ưu cho các lập trình viên và doanh nghiệp khi cần môi trường độc lập để cài đặt Jenkins, thực hiện build và kiểm thử liên tục. Dịch vụ VPS tại Vietnix cung cấp tài nguyên linh hoạt, ổ cứng SSD 100%, hỗ trợ chạy mượt các ứng dụng tự động hóa như Jenkins, GitLab CI,… Nhờ đó, bạn có thể dễ dàng tối ưu quy trình phát triển phần mềm trên một nền tảng đáng tin cậy.

Hạ tầng máy chủ an toàn tuyệt đối
KHÁM PHÁ dịch vụ vps tốc độ cao tại vietnix ngay!
Dịch vụ VPS tại Vietnix – Hiệu năng mạnh mẽ, ổn định và tối ưu cho mọi nhu cầu vận hành hệ thống của bạn!
Tham khảo dịch vụ VPS ngay!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.

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 code dựa theo Apache Groovy.
Tìm hiểu CI và CD trong Jenkins là gì?
1. 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 đích phát triển lỗi nhanh chóng. 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.
2. 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à deploy 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. Mục đích chính 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.

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?
Jenkins vận hành như một máy chủ độc lập trên nhiều hệ điều hành phổ biến như Windows, macOS, Unix và đặc biệt là Linux – môi trường thường được ưa chuộng nhờ tính ổn định và hiệu suất cao. Công cụ này yêu cầu Java 8 trở lên và thường chạy như một servlet Java trên các máy chủ ứng dụng như Jetty hoặc Apache Tomcat. Ngoài ra, Jenkins cũng hỗ trợ triển khai trong container Docker để dễ dàng tích hợp vào các hệ thống hiện đại.

Jenkins sử dụng khái niệm pipeline – chuỗi các bước tự động hóa giúp thực thi quy trình CI/CD. Mỗi pipeline được định nghĩa thông qua file Jenkinsfile
, nơi các tác vụ được mô tả dưới dạng mã có cấu trúc rõ ràng. Với các dự án có quy mô lớn hoặc chạy trên nền tảng VPS Linux tốc độ cao, Jenkins có thể phát huy tối đa sức mạnh nhờ khả năng tùy biến cao, hỗ trợ chạy liên tục và phân phối tài nguyên linh hoạt.
Ư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 riêng:
Hỗ trợ mở rộng linh hoạt qua hệ thống plugin phong phú.
Tài liệu dồi dào, cộng đồng lớn, dễ học và dễ khắc phục sự cố.
Được xây dựng trên nền tảng Java, dễ tích hợp trong hệ sinh thái doanh nghiệp.
Phù hợp với nhiều môi trường từ cục bộ đến hệ thống phức hợp và đám mây.
Hỗ trợ triển khai trên Docker và đa nền tảng hệ điều hành.
Pipeline phức tạp đòi hỏi lập trình với cú pháp riêng, khó debug và bảo trì.
Giới hạn tài nguyên do chạy trên kiến trúc máy chủ đơn.
Khó mở rộng quy mô do không hỗ trợ liên kết nhiều máy chủ hiệu quả.
Dựa trên công nghệ Java cũ, không tối ưu cho các framework hiện đại như Spring Boot, GraalVM.
Kiến trúc phức tạp khi triển khai Docker vẫn cần gộp code Jenkins và phần mềm trung gian.
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. 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: https://plugins.jenkins.io/.

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). 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 là gì?
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 Pipeline. 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 là gì?
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ó chứa các công việc của Pipeline 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ách cài đặt Jenkins chi tiết
Trên Windows
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.
3. Bạn nhấp vào “Next” để bắt đầu cài đặt

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

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

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.

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“.

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.

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

11. Bạn 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“.

12. Bạn nhấp “Save and Finish“.

13. Bạn nhấp ” Start using Jenkins” để khởi động Jenkins.

14. Khi giao diện Jenkins xuất hiện là bạn có thể sử dụng.

Trên Linux
Sau khi cài Java, bạn thực hiện các bước sau để cài đặt Jenkins trên hệ điều hành Linux (Debian/Ubuntu):
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install jenkins -y
Sau khi cài đặt, truy cập Jenkins qua trình duyệt tại địa chỉ http://localhost:8080
. Trong lần khởi động đầu tiên, bạn chỉ cần chọn “Install suggested plugins” để cấu hình nhanh hệ thống. Nếu muốn tích hợp Jenkins với GitHub thông qua webhook (ví dụ: tự động build khi có PR mới), bạn cần một domain public. Có thể dùng các công cụ như ngrok hoặc ssh.localhost.run để tạo đường dẫn công khai từ cổng 8080
trong máy.
Cách cấu hình CI và CD
Cấu hình CI
Để Jenkins tự động chạy khi có pull request mới trên repository, cần cấu hình tích hợp với GitHub thông qua plugin GitHub Pull Request Builder. Trước tiên, cài đặt plugin bằng cách truy cập Manage Jenkins > Manage Plugins > Available, tìm kiếm tên plugin và chọn cài đặt không cần khởi động lại.

Tiếp theo, tạo webhook trong phần cài đặt repo GitHub với URL có định dạng http://<your-domain>/ghprbhook/
, chọn loại application/json
và kích hoạt các sự kiện như Issue comments và Pull requests.
Sau khi thiết lập webhook, quay lại Jenkins để cấu hình plugin: thêm thông tin xác thực GitHub trong Manage Jenkins > Configure System và tạo job mới. Trong cấu hình job, nhập đường dẫn repo, bật tùy chọn Use GitHub hooks for build triggering và khai báo nhánh cần theo dõi.


Cuối cùng, viết pipeline script trong Jenkinsfile để định nghĩa các bước build và kiểm thử. Khi cấu hình hoàn tất, chỉ cần tạo pull request vào nhánh chính là Jenkins sẽ tự động kích hoạt quy trình CI.

Cấu hình CD
Để thiết lập quy trình Continuous Deployment (CD) khi xảy ra sự kiện merge pull request trên GitHub, cần kết hợp Jenkins với plugin Generic Webhook Trigger do GitHub chưa hỗ trợ webhook trực tiếp cho sự kiện này.
Cách thực hiện gồm 3 bước chính:
- Bước 1: Tạo webhook mới trên GitHub với định dạng URL:
<PUBLIC_DOMAIN>/generic-webhook-trigger/invoke?token=my-token
và chọn loại sự kiện là Pull requests.
Bước 2: Trong Jenkins, tạo một job mới, bật tùy chọn Generic Webhook Trigger tại mục Build Triggers, sau đó cấu hình để phân tích payload:

Bước 3: Viết pipeline script trong job với các bước: Checkout, Build, Deploy và Notify. Mỗi bước đều kèm điều kiện kiểm tra trạng thái merge thành công để đảm bảo chỉ triển khai khi pull request đã được gộp.
Vietnix – Đơn vị cung cấp dịch vụ lưu trữ tốc độ cao
Vietnix là đơn vị cung cấp giải pháp VPS hiệu năng cao với nền tảng hạ tầng sử dụng hoàn toàn ổ cứng SSD, giúp tăng tốc độ xử lý và độ ổn định cho hệ thống. Người dùng có thể linh hoạt tùy chỉnh cấu hình theo nhu cầu và dễ dàng quản lý qua giao diện thân thiện, trực quan. Với sự ổn định, bảo mật và hỗ trợ kỹ thuật chuyên nghiệp, Vietnix là lựa chọn lý tưởng cho cá nhân và doanh nghiệp cần một môi trường lưu trữ đáng tin cậy để phát triển website, ứng dụng hay nền tảng số.
Thông tin liên hệ:
- Hotline: 18001093
- Email: sales@vietnix.com.vn
- Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh
- Website: https://vietnix.vn/
Câu hỏi thường gặp
Jenkins Agent là gì?
Jenkins Agent (còn gọi là node) là thành phần thực thi các tác vụ được giao bởi Jenkins Controller (máy chủ chính). Thay vì để toàn bộ công việc build, test hay deploy diễn ra trên một máy chủ duy nhất, Jenkins cho phép phân phối tải sang nhiều agent, giúp tăng hiệu suất và khả năng mở rộng hệ thống.
Khi nào nên chọn Jenkins thay vì dùng dịch vụ CI/CD tích hợp sẵn của GitHub hoặc GitLab?
Bạn nên chọn Jenkins thay vì dùng CI/CD tích hợp sẵn của GitHub hoặc GitLab trong các trường hợp sau:
– Cần tùy biến cao: Jenkins hỗ trợ hơn 1.800 plugin, phù hợp với quy trình build phức tạp và yêu cầu tích hợp đặc thù.
– Triển khai đa nền tảng: Jenkins dễ dàng vận hành trên VPS, container hoặc hybrid cloud, linh hoạt hơn hệ thống tích hợp sẵn.
– Kiểm soát toàn diện: Triển khai trên hạ tầng riêng giúp bạn chủ động về bảo mật, tài nguyên và phân quyền.
– Khối lượng job lớn: Jenkins không bị giới hạn tài nguyên như GitHub Actions hay GitLab CI, đặc biệt khi chạy trên VPS mạnh.
Lời kết
Jenkins là công cụ mạnh mẽ và linh hoạt trong việc tự động hóa quy trình CI/CD, giúp lập trình viên và đội ngũ phát triển tiết kiệm thời gian, giảm thiểu lỗi và tăng tốc độ triển khai phần mềm. Qua bài viết này, mình hy vọng bạn đã hiểu rõ Jenkins là gì, cách cài đặt và cấu hình cơ bản để bắt đầu hành trình tối ưu hóa quy trình DevOps. Nếu bạn đang tìm kiếm một môi trường ổn định để triển khai Jenkins, hãy liên hệ ngay với Vietnix để được tư vấn chi tiết!