Bạn đã bao giờ tự hỏi tại sao Jenkins lại trở thành công cụ không thể thiếu trong thế giới phát triển phần mềm hiện đại chưa? Trong bối cảnh các dự án ngày càng phức tạp, việc quản lý, tích hợp và triển khai mã nguồn một cách thủ công không chỉ tốn thời gian mà còn tiềm ẩn nhiều rủi ro sai sót. Đây chính là thách thức lớn mà mọi đội ngũ phát triển đều phải đối mặt. Jenkins xuất hiện như một giải pháp toàn diện, tự động hóa toàn bộ quy trình từ lúc lập trình viên đẩy mã nguồn lên kho chứa cho đến khi sản phẩm được triển khai đến tay người dùng. Bằng cách áp dụng Cài đặt Ubuntu, Hệ điều hành Ubuntu là gì và Linux, Jenkins giúp tăng tốc độ phát triển, cải thiện chất lượng sản phẩm và giảm thiểu công sức vận hành. Trong bài viết này, chúng ta sẽ cùng nhau đi qua từng bước, từ việc chuẩn bị hệ thống Ubuntu 20.04, cài đặt các thành phần cần thiết, cho đến khi hoàn tất cấu hình và sẵn sàng sử dụng Jenkins.
Chuẩn bị môi trường làm việc và yêu cầu hệ thống trên Ubuntu 20.04
Trước khi bắt đầu hành trình cài đặt Jenkins, việc chuẩn bị một môi trường làm việc ổn định và đáp ứng đủ yêu cầu là bước đầu tiên và quan trọng nhất. Một nền tảng vững chắc sẽ đảm bảo Jenkins có thể hoạt động mượt mà và hiệu quả, tránh được những sự cố không đáng có trong quá trình vận hành.
Yêu cầu phần cứng và phần mềm tối thiểu
Để Jenkins có thể chạy ổn định, máy chủ của bạn cần đáp ứng một số yêu cầu cơ bản. Mặc dù Jenkins khá linh hoạt, nhưng việc cung cấp đủ tài nguyên sẽ giúp hệ thống của bạn hoạt động hiệu quả hơn, đặc biệt khi xử lý nhiều pipeline phức tạp cùng lúc.
Đối với một hệ thống nhỏ hoặc dùng cho mục đích học tập, bạn cần chuẩn bị:
- RAM: Tối thiểu 1 GB. Tuy nhiên, AZWEB khuyến nghị bạn nên sử dụng ít nhất 4 GB RAM là gì để có trải nghiệm tốt nhất, đặc biệt khi bạn dự định chạy các build job lớn.
- Dung lượng ổ cứng: Ít nhất 10 GB dung lượng trống. Con số này sẽ tăng lên tùy thuộc vào số lượng và quy mô dự án bạn quản lý, vì Jenkins cần không gian để lưu trữ các build artifacts và cấu hình.
- CPU: Một CPU 2 nhân là đủ để bắt đầu.
Về phần mềm, bạn chỉ cần một hệ điều hành Ubuntu 20.04 (Focal Fossa) đã được cài đặt sẵn sàng.

Cập nhật hệ thống và các công cụ hỗ trợ cần thiết
Luôn giữ cho hệ thống được cập nhật là một nguyên tắc vàng trong quản trị máy chủ. Việc này không chỉ giúp vá các lỗ hổng bảo mật mà còn đảm bảo sự tương thích giữa các gói phần mềm. Hãy mở terminal và chạy các lệnh sau để cập nhật danh sách gói và nâng cấp hệ thống của bạn:
sudo apt update
sudo apt upgrade -y
Lệnh apt update sẽ làm mới danh sách các gói phần mềm từ kho lưu trữ, trong khi apt upgrade sẽ tiến hành nâng cấp các gói đã cài đặt lên phiên bản mới nhất. Quá trình này có thể mất vài phút tùy thuộc vào tình trạng hiện tại của hệ thống.
Tiếp theo, chúng ta cần cài đặt một số công cụ hỗ trợ cần thiết như wget và curl để tải về các tệp từ internet. Hầu hết các phiên bản Ubuntu đã cài sẵn chúng, nhưng để chắc chắn, bạn có thể chạy lệnh sau:
sudo apt install wget curl -y
Sau khi hoàn tất các bước này, hệ thống Ubuntu 20.04 của bạn đã sạch sẽ, cập nhật và sẵn sàng cho việc cài đặt Java – yêu cầu tiên quyết để Jenkins có thể hoạt động.

Cài đặt Java làm tiền đề cho Jenkins
Một trong những yêu cầu quan trọng nhất trước khi cài đặt Jenkins chính là Java. Jenkins là một ứng dụng được viết bằng ngôn ngữ Java, do đó, nó cần Môi trường thực thi Java (Java Runtime Environment – JRE) để có thể chạy được. Việc cài đặt đúng phiên bản Java tương thích sẽ đảm bảo Jenkins hoạt động ổn định và tránh các lỗi không mong muốn.
Lý do Jenkins cần Java và phiên bản tương thích
Jenkins được xây dựng trên nền tảng Java, điều này mang lại cho nó khả năng đa nền tảng tuyệt vời. Dù bạn chạy Jenkins trên Windows, macOS hay Linux, nó đều hoạt động nhất quán vì mã nguồn được thực thi bên trong một Máy ảo Java (JVM). JVM hoạt động như một lớp trung gian, phiên dịch mã Java thành các lệnh mà hệ điều hành của bạn có thể hiểu được.
Về phiên bản, Jenkins liên tục phát triển và các yêu cầu về phiên bản Java cũng thay đổi theo thời gian. Hiện tại, Jenkins yêu cầu Java 11 hoặc Java 17 để hoạt động. Các phiên bản cũ hơn như Java 8 không còn được hỗ trợ. Việc sử dụng phiên bản được khuyến nghị sẽ đảm bảo bạn nhận được sự hỗ trợ tốt nhất và hiệu năng tối ưu. Trong hướng dẫn này, chúng ta sẽ cài đặt OpenJDK 11, một phiên bản mã nguồn mở phổ biến và ổn định của Java. Bạn có thể tham khảo thêm tổng quan về Linux là gì để hiểu rõ hơn môi trường hoạt động của Jenkins và Java trên Linux.

Hướng dẫn cài đặt OpenJDK trên Ubuntu 20.04
Cài đặt OpenJDK trên Ubuntu là một quá trình rất đơn giản nhờ vào trình quản lý gói apt. Bạn chỉ cần mở terminal và thực thi lệnh sau:
sudo apt install openjdk-11-jdk -y
Lệnh này sẽ tự động tải về và cài đặt OpenJDK 11 Development Kit (JDK). JDK bao gồm cả JRE (cần thiết để chạy Jenkins) và các công cụ phát triển khác. Cờ -y được thêm vào để tự động xác nhận quá trình cài đặt mà không cần hỏi lại.
Sau khi quá trình cài đặt hoàn tất, bạn có thể kiểm tra lại để chắc chắn rằng Java đã được cài đặt thành công và đúng phiên bản. Sử dụng lệnh sau:
java -version
Nếu cài đặt thành công, bạn sẽ thấy kết quả hiển thị thông tin về phiên bản OpenJDK 11, tương tự như sau:
openjdk version "11.0.21" 2023-10-17
OpenJDK Runtime Environment (build 11.0.21+9-post-Ubuntu-0ubuntu120.04)
OpenJDK 64-Bit Server VM (build 11.0.21+9-post-Ubuntu-0ubuntu120.04, mixed mode, sharing)

Vậy là bạn đã hoàn tất việc cài đặt Java. Hệ thống của bạn giờ đây đã có đủ “nhiên liệu” cần thiết để “cỗ máy” Jenkins có thể khởi động. Bước tiếp theo, chúng ta sẽ thêm kho lưu trữ của Jenkins vào hệ thống để chuẩn bị cho việc cài đặt.
Thêm kho lưu trữ Jenkins chính thức và cập nhật hệ thống
Để đảm bảo chúng ta luôn cài đặt được phiên bản Jenkins mới nhất và ổn định nhất, cũng như nhận được các bản cập nhật trong tương lai một cách dễ dàng, cách tốt nhất là sử dụng kho lưu trữ (repository) chính thức từ Jenkins. Quá trình này bao gồm hai bước chính: thêm khóa GPG để xác thực các gói và sau đó thêm địa chỉ kho lưu trữ vào hệ thống.
Thêm khóa GPG và kho lưu trữ Jenkins
Khóa GPG (GNU Privacy Guard) là một cơ chế mã hóa giúp hệ thống của bạn xác minh rằng các gói phần mềm bạn tải về từ kho lưu trữ Jenkins là hợp lệ và không bị thay đổi bởi bên thứ ba. Đây là một bước bảo mật quan trọng.
Hãy chạy lệnh sau để tải khóa GPG của Jenkins và lưu nó vào hệ thống của bạn:
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee /usr/share/keyrings/jenkins-keyring.asc > /dev/null
Lệnh này sử dụng curl để tải khóa về, sau đó dùng tee để ghi nội dung vào file /usr/share/keyrings/jenkins-keyring.asc với quyền quản trị.
Tiếp theo, chúng ta sẽ thêm kho lưu trữ của Jenkins vào danh sách nguồn phần mềm của hệ thống. Chạy lệnh sau:
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/ | sudo tee /etc/apt/sources.list.d/jenkins.list > /dev/null
Lệnh này tạo một tệp mới tên là jenkins.list trong thư mục /etc/apt/sources.list.d/. Tệp này chứa địa chỉ của kho lưu trữ Jenkins và chỉ định khóa GPG mà chúng ta vừa thêm để xác thực các gói từ kho này.

Cập nhật danh sách gói để chuẩn bị cài đặt Jenkins
Sau khi đã thêm kho lưu trữ mới, bạn cần thông báo cho trình quản lý gói apt biết về sự thay đổi này. Hãy chạy lại lệnh apt update để hệ thống tải về thông tin các gói có sẵn từ kho lưu trữ Jenkins.
sudo apt update
Lúc này, bạn sẽ thấy trong danh sách các kho lưu trữ được cập nhật có cả địa chỉ pkg.jenkins.io. Điều này xác nhận rằng bạn đã thêm kho lưu trữ thành công. Hệ thống của bạn giờ đã nhận diện được gói jenkins và sẵn sàng cho bước cài đặt cuối cùng. Với kho lưu trữ chính thức đã được thiết lập, bạn có thể dễ dàng cài đặt và sau này nâng cấp Jenkins chỉ bằng một vài lệnh đơn giản.
Tiến hành cài đặt Jenkins và khởi động dịch vụ
Sau khi đã hoàn tất mọi công đoạn chuẩn bị, từ cập nhật hệ thống, cài đặt Java cho đến việc thêm kho lưu trữ chính thức, giờ là lúc chúng ta tiến hành cài đặt Jenkins. Quá trình này rất nhanh chóng và đơn giản nhờ vào sự hỗ trợ của trình quản lý gói apt.
Lệnh cài đặt Jenkins trên Ubuntu 20.04
Với kho lưu trữ đã được thêm ở bước trước, bạn chỉ cần chạy một lệnh duy nhất để cài đặt Jenkins. Mở terminal và gõ:
sudo apt install jenkins -y
Hệ thống apt sẽ tự động tìm gói jenkins trong kho lưu trữ bạn đã thêm, giải quyết các gói phụ thuộc cần thiết và tiến hành cài đặt. Quá trình này cũng sẽ tự động tạo một người dùng hệ thống tên là jenkins để chạy dịch vụ, tạo các thư mục cần thiết như /var/lib/jenkins để lưu trữ dữ liệu và cấu hình.
Khởi động và kiểm tra trạng thái dịch vụ Jenkins
Thông thường, sau khi cài đặt hoàn tất, dịch vụ Jenkins sẽ tự động được khởi động. Tuy nhiên, để chắc chắn, chúng ta nên kiểm tra và học cách quản lý dịch vụ này.
Đầu tiên, hãy khởi động dịch vụ Jenkins bằng lệnh sau (nếu nó chưa chạy):
sudo systemctl start jenkins
Tiếp theo, hãy kiểm tra trạng thái của dịch vụ để đảm bảo nó đang hoạt động ổn định:
sudo systemctl status jenkins
Nếu mọi thứ hoạt động bình thường, bạn sẽ thấy một thông báo có dòng chữ active (running) màu xanh lá. Kết quả sẽ trông tương tự như thế này:
● jenkins.service - Jenkins Continuous Integration Server
Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2023-11-15 10:30:00 UTC; 5s ago
Main PID: 12345 (java)
Tasks: 45 (limit: 4662)
Memory: 1.2G
CGroup: /system.slice/jenkins.service
└─12345 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=/var/cache/jenkins/war --httpPort=8080

Cuối cùng, để đảm bảo Jenkins sẽ tự động khởi động cùng hệ thống mỗi khi bạn reboot máy chủ, hãy kích hoạt dịch vụ bằng lệnh:
sudo systemctl enable jenkins
Lệnh này tạo một liên kết tượng trưng cần thiết để systemd tự động khởi chạy Jenkins khi khởi động. Giờ đây, Jenkins đã được cài đặt và đang chạy ngầm trên máy chủ của bạn. Bước tiếp theo là cấu hình nó thông qua giao diện web.
Cấu hình cơ bản để bắt đầu sử dụng Jenkins
Jenkins đã được cài đặt và đang chạy, nhưng vẫn còn một vài bước cấu hình ban đầu để bạn có thể bắt đầu sử dụng. Quá trình này được thực hiện hoàn toàn qua giao diện web thân thiện và chỉ cần làm một lần duy nhất.
Truy cập giao diện web Jenkins lần đầu tiên
Jenkins mặc định chạy trên cổng 8080. Để truy cập, bạn hãy mở trình duyệt web và điều hướng đến địa chỉ: http://your_server_ip:8080 (thay your_server_ip bằng địa chỉ IP của máy chủ Ubuntu của bạn).
Nếu bạn đang cài đặt trên máy cục bộ, bạn có thể dùng http://localhost:8080.
Lần đầu tiên truy cập, bạn sẽ thấy màn hình “Unlock Jenkins”. Jenkins yêu cầu bạn nhập một mật khẩu quản trị viên ban đầu để đảm bảo chỉ có bạn mới có thể thiết lập hệ thống. Mật khẩu này được tự động tạo ra và lưu trong một tệp trên máy chủ.

Để lấy mật khẩu, hãy quay lại terminal và chạy lệnh sau:
sudo cat /var/lib/jenkins/secrets/initialAdminPassword
Lệnh này sẽ hiển thị một chuỗi ký tự dài. Hãy sao chép chuỗi này, dán vào ô “Administrator password” trên trình duyệt và nhấn “Continue”.
Thiết lập tài khoản quản trị và plugin cơ bản
Sau khi mở khóa, Jenkins sẽ đưa bạn đến trang “Customize Jenkins”. Tại đây, bạn có hai lựa chọn:
- Install suggested plugins: Jenkins sẽ tự động cài đặt một bộ plugin phổ biến và hữu ích cho hầu hết các trường hợp sử dụng CI/CD. Đây là lựa chọn được khuyến nghị cho người mới bắt đầu.
- Select plugins to install: Cho phép bạn tự tay lựa chọn các plugin mình muốn cài. Lựa chọn này phù hợp hơn nếu bạn đã có kinh nghiệm và biết chính xác mình cần gì.
Hãy chọn “Install suggested plugins”. Jenkins sẽ bắt đầu quá trình tải và cài đặt các plugin.

Sau khi cài đặt plugin hoàn tất, bạn sẽ được chuyển đến trang “Create First Admin User”. Thay vì tiếp tục sử dụng mật khẩu ban đầu, bạn nên tạo một tài khoản quản trị viên riêng cho mình. Hãy điền đầy đủ thông tin: tên người dùng, mật khẩu, họ tên và địa chỉ email.

Cuối cùng, trang “Instance Configuration” sẽ hỏi bạn xác nhận URL của Jenkins. Mặc định nó sẽ là địa chỉ bạn đang truy cập. Hãy giữ nguyên và nhấn “Save and Finish”.
Bây giờ bạn đã hoàn tất quá trình thiết lập. Nhấn vào “Start using Jenkins”, và bạn sẽ được chào đón bởi giao diện chính của Jenkins. Bạn đã sẵn sàng để tạo ra những pipeline tự động hóa đầu tiên của mình!

Kiểm tra và khắc phục sự cố thường gặp sau khi cài đặt
Mặc dù quá trình cài đặt Jenkins trên Ubuntu 20.04 khá đơn giản, đôi khi bạn vẫn có thể gặp phải một số sự cố. Việc biết cách chẩn đoán và khắc phục các vấn đề phổ biến sẽ giúp bạn tiết kiệm rất nhiều thời gian và nhanh chóng đưa hệ thống vào hoạt động.
Jenkins không khởi động hoặc lỗi dịch vụ
Một trong những vấn đề thường gặp nhất là dịch vụ Jenkins không thể khởi động thành công. Khi bạn chạy lệnh sudo systemctl status jenkins và thấy trạng thái là failed hoặc inactive (dead), đó là lúc cần phải điều tra.
Nguyên nhân phổ biến nhất là do cấu hình sai hoặc thiếu tài nguyên.
- Kiểm tra phiên bản Java: Hãy chắc chắn rằng bạn đã cài đặt đúng phiên bản Java được Jenkins hỗ trợ (Java 11 hoặc 17). Chạy lại lệnh
java -versionđể xác nhận. Nếu bạn cài nhầm phiên bản, Jenkins sẽ không thể khởi động. Bạn có thể xem hướng dẫn Bash là gì để thao tác dòng lệnh hiệu quả trên Linux. - Kiểm tra log hệ thống: Công cụ tốt nhất để chẩn đoán lỗi dịch vụ trên Ubuntu là
journalctl. Hãy chạy lệnh sau để xem chi tiết các log của dịch vụ Jenkins:sudo journalctl -u jenkins -f --no-pagerLệnh này sẽ hiển thị các thông báo lỗi cụ thể. Hãy đọc kỹ các dòng cuối cùng, chúng thường chứa nguyên nhân của sự cố, ví dụ như thiếu bộ nhớ (Out of Memory) hoặc lỗi cấu hình.
- Kiểm tra tài nguyên: Nếu log báo lỗi thiếu bộ nhớ, có thể máy chủ của bạn không đủ RAM. Hãy xem xét nâng cấp RAM hoặc tăng bộ nhớ swap.
Vấn đề kết nối và truy cập giao diện web Jenkins
Một sự cố phổ biến khác là bạn đã cài đặt và khởi động Jenkins thành công (trạng thái active (running)) nhưng lại không thể truy cập giao diện web qua cổng 8080.
Nguyên nhân chính thường là do tường lửa (firewall) đang chặn kết nối. Ubuntu 20.04 đi kèm với tường lửa UFW (Uncomplicated Firewall), và nó thường được kích hoạt mặc định.
Để giải quyết vấn đề này, bạn cần cho phép lưu lượng truy cập qua cổng 8080.
- Kiểm tra trạng thái UFW: Đầu tiên, hãy kiểm tra xem UFW có đang hoạt động hay không:
sudo ufw statusNếu kết quả là
Status: active, tường lửa đang chạy. - Mở cổng 8080: Chạy lệnh sau để tạo một quy tắc cho phép kết nối đến cổng
8080:sudo ufw allow 8080Sau khi chạy lệnh, bạn sẽ thấy thông báo
Rule added. - Kiểm tra lại: Bây giờ hãy thử tải lại trang
http://your_server_ip:8080trên trình duyệt. Bạn sẽ có thể truy cập được giao diện của Jenkins.

Bằng cách nắm vững các bước chẩn đoán cơ bản này, bạn có thể tự tin xử lý hầu hết các vấn đề phát sinh sau khi cài đặt, đảm bảo hệ thống Jenkins của bạn luôn sẵn sàng phục vụ.
Best Practices khi sử dụng Jenkins trên Ubuntu 20.04
Cài đặt thành công Jenkins chỉ là bước khởi đầu. Để vận hành một hệ thống CI/CD hiệu quả, an toàn và bền vững, việc tuân thủ các thực tiễn tốt nhất (best practices) là vô cùng quan trọng. Dưới đây là những khuyến nghị từ AZWEB giúp bạn sử dụng Jenkins trên Ubuntu 20.04 một cách tối ưu nhất.
- Luôn giữ hệ thống và Jenkins được cập nhật thường xuyên:
Cả Jenkins và các plugin của nó đều được cập nhật liên tục để vá lỗi bảo mật và bổ sung tính năng mới. Hãy thường xuyên truy cập vào mục “Manage Jenkins” > “Plugins” (hoặc “System Information”) để kiểm tra các bản cập nhật. Đồng thời, đừng quên chạysudo apt update && sudo apt upgradeđịnh kỳ để cập nhật hệ điều hành Ubuntu và các gói hệ thống khác. - Tạo backup cấu hình và dữ liệu định kỳ:
Cấu hình các job, pipeline và các thiết lập hệ thống trong Jenkins là tài sản quý giá. Việc mất mát dữ liệu này có thể gây gián đoạn nghiêm trọng. Hãy sử dụng các plugin như “ThinBackup” hoặc viết script để tự động sao lưu thư mụcJENKINS_HOME(/var/lib/jenkins) một cách định kỳ. Lưu trữ các bản sao lưu ở một nơi an toàn, tách biệt với máy chủ Jenkins. - Tránh cài đặt plugin không cần thiết gây ảnh hưởng hiệu suất:
Hệ sinh thái plugin của Jenkins rất phong phú, nhưng mỗi plugin bạn cài đặt đều tiêu tốn thêm tài nguyên (RAM DDR4 là gì), CPU và có thể tiềm ẩn rủi ro bảo mật. Hãy tuân thủ nguyên tắc tối giản: chỉ cài đặt những plugin thực sự cần thiết cho quy trình làm việc của bạn. Thường xuyên rà soát danh sách plugin đã cài và gỡ bỏ những cái không còn sử dụng. - Sử dụng tài khoản với quyền hạn tối thiểu để bảo mật:
Không nên sử dụng tài khoản quản trị (admin) cho mọi hoạt động. Thay vào đó, hãy tận dụng hệ thống phân quyền của Jenkins. Tạo các vai trò (roles) và người dùng khác nhau với các quyền hạn được giới hạn trong phạm vi công việc của họ. Ví dụ, một lập trình viên chỉ cần quyền xem và kích hoạt build cho dự án của mình, không cần quyền thay đổi cấu hình hệ thống. Điều này giúp giảm thiểu rủi ro khi một tài khoản bị xâm phạm.
Bằng cách áp dụng những nguyên tắc này, bạn không chỉ xây dựng được một hệ thống Jenkins mạnh mẽ mà còn đảm bảo nó luôn an toàn, ổn định và dễ dàng bảo trì trong dài hạn.
Kết luận
Qua bài viết này, chúng ta đã cùng nhau hoàn thành hành trình cài đặt và cấu hình Jenkins trên Ubuntu 20.04 một cách chi tiết. Từ việc chuẩn bị môi trường, cài đặt Java, thêm kho lưu trữ chính thức, cho đến việc khởi chạy và thiết lập ban đầu, mỗi bước đều được hướng dẫn cặn kẽ để đảm bảo bạn có thể thực hiện thành công. Jenkins không chỉ là một công cụ, mà là một trợ thủ đắc lực giúp tự động hóa quy trình phát triển phần mềm, từ đó giải phóng thời gian cho đội ngũ của bạn tập trung vào việc sáng tạo và nâng cao chất lượng sản phẩm.
Lợi ích mà Jenkins mang lại cho quy trình CI/CD là không thể phủ nhận: tăng tốc độ triển khai, giảm thiểu sai sót do con người và tạo ra một luồng công việc minh bạch, nhất quán. Đừng ngần ngại, hãy bắt tay vào thực hành ngay hôm nay. Việc tự mình cài đặt và trải nghiệm sẽ giúp bạn hiểu sâu hơn về cách thức hoạt động và tiềm năng của công cụ mạnh mẽ này.
Bước tiếp theo cho hành trình của bạn là gì? Hãy bắt đầu khám phá các tính năng nâng cao hơn như tạo pipeline dưới dạng mã (Pipeline as Code), tích hợp Jenkins với các công cụ khác như Docker, Kubernetes, hoặc SonarQube để xây dựng một hệ sinh thái DevOps hoàn chỉnh. Chúc bạn thành công trên con đường tối ưu hóa quy trình phát triển phần mềm của mình.