Hướng dẫn cài đặt Jenkins trên Ubuntu 20.04 chi tiết cho CI/CD

Chào bạn, tôi là Bùi Mạnh Đức. Trong thế giới phát triển phần mềm hiện đại, tốc độ và sự ổn định là hai yếu tố quyết định thành công. Vậy làm thế nào để các nhóm phát triển có thể liên tục tích hợp mã nguồn mới, kiểm thử và triển khai sản phẩm một cách tự động mà không gặp phải lỗi lầm không đáng có? Câu trả lời nằm ở CI/CD, và Jenkins chính là một trong những công cụ mã nguồn mở mạnh mẽ nhất giúp hiện thực hóa quy trình này. Việc triển khai thủ công không chỉ tốn thời gian mà còn tiềm ẩn nhiều rủi ro, dễ gây ra sai sót và làm chậm tiến độ dự án. Jenkins ra đời như một giải pháp toàn diện, giúp tự động hóa mọi giai đoạn từ xây dựng, kiểm thử đến triển khai, đảm bảo mã nguồn luôn ở trạng thái sẵn sàng phát hành. Trong bài viết này, chúng ta sẽ cùng nhau đi qua từng bước chi tiết để cài đặt Jenkins trên Ubuntu 20.04, từ việc chuẩn bị môi trường, cài đặt các thành phần cần thiết, cho đến cấu hình ban đầu và xử lý các sự cố thường gặp. Hãy cùng bắt đầu hành trình tối ưu hóa quy trình làm việc của bạn ngay bây giờ.

Giới thiệu về Jenkins và lợi ích trong CI/CD

Tại sao Jenkins trở thành công cụ không thể thiếu trong phát triển phần mềm hiện đại? Trong bối cảnh các dự án ngày càng phức tạp và đòi hỏi tốc độ ra mắt nhanh chóng, việc tích hợp và triển khai mã nguồn một cách thủ công đã trở nên lỗi thời và kém hiệu quả. Các nhà phát triển thường xuyên đối mặt với thách thức trong việc quản lý các phiên bản mã nguồn khác nhau, thực hiện kiểm thử lặp đi lặp lại và đảm bảo rằng sản phẩm khi đến tay người dùng cuối luôn ổn định. Quá trình này không chỉ tốn nhiều công sức mà còn dễ phát sinh lỗi do con người, gây ảnh hưởng trực tiếp đến chất lượng và tiến độ của dự án.

Đây chính là lúc Jenkins phát huy vai trò của mình. Jenkins là một máy chủ tự động hóa mã nguồn mở, được viết bằng Java, giúp các nhóm phát triển tự động hóa các quy trình liên quan đến xây dựng (build), kiểm thử (test) và triển khai (deploy) phần mềm. Nó là trung tâm của quy trình Tích hợp liên tục (Continuous Integration – CI)Triển khai liên tục (Continuous Delivery/Deployment – CD). Với CI, mỗi khi một nhà phát triển đẩy mã nguồn mới lên kho lưu trữ, Jenkins sẽ tự động xây dựng và chạy các bài kiểm thử để phát hiện lỗi sớm. Với CD, sau khi mã nguồn đã vượt qua các bài kiểm thử, Jenkins có thể tự động triển khai phiên bản mới lên môi trường sản phẩm.

Lợi ích mà Jenkins mang lại là vô cùng to lớn. Nó giúp tăng tốc độ phát triển bằng cách giảm thiểu các công việc thủ công, cho phép các nhà phát triển tập trung vào việc viết mã. Jenkins cũng cải thiện chất lượng sản phẩm bằng cách phát hiện lỗi ngay từ giai đoạn đầu, trước khi chúng trở thành những vấn đề nghiêm trọng. Hơn nữa, với hệ sinh thái plugin phong phú, Jenkins có thể tích hợp với hầu hết các công cụ quản lý mã nguồn, xây dựng và kiểm thử phổ biến hiện nay. Trong bài viết này, chúng ta sẽ khám phá chi tiết cách cài đặt công cụ mạnh mẽ này trên hệ điều hành Ubuntu 20.04, từ việc chuẩn bị hệ thống, cài đặt các phụ thuộc, cho đến khi hoàn tất và sẵn sàng đưa vào sử dụng.

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 tay vào cài đặt, việc chuẩn bị một môi trường sạch và đáp ứng đủ yêu cầu là bước đầu tiên và quan trọng nhất để đảm bảo Jenkins hoạt động ổn định. Giống như xây một ngôi nhà, bạn cần một nền móng vững chắc. Đối với Jenkins, nền móng đó chính là hệ điều hành và các tài nguyên hệ thống của bạn.

Yêu cầu phần cứng và phần mềm tối thiểu

Jenkins có thể chạy trên nhiều cấu hình khác nhau, nhưng để có trải nghiệm tốt nhất, bạn nên tuân thủ các khuyến nghị từ nhà phát triển. Dưới đây là các yêu cầu tối thiểu và khuyến nghị cho một máy chủ Jenkins:

  • Yêu cầu tối thiểu:
    • RAM: 256 MB. Tuy nhiên, đây là con số rất thấp và chỉ phù hợp cho các dự án cực kỳ nhỏ hoặc mục đích thử nghiệm. Bạn có thể tìm hiểu thêm về RAM là gì để hiểu rõ hơn về vai trò của bộ nhớ trong hệ thống.
    • Dung lượng ổ cứng: 1 GB. Con số này chưa bao gồm không gian cần thiết cho các bản build, workspace của các dự án.
  • Yêu cầu khuyến nghị cho môi trường thực tế:
    • RAM: Tối thiểu 4 GB. RAM là yếu tố quan trọng nhất, vì Jenkins và các tiến trình build có thể tiêu tốn rất nhiều bộ nhớ, đặc biệt khi bạn chạy nhiều pipeline song song.
    • Dung lượng ổ cứng: Tối thiểu 50 GB. Không gian này sẽ được sử dụng để lưu trữ cấu hình Jenkins, các plugin, và quan trọng nhất là dữ liệu từ các lần build dự án của bạn. Ổ cứng SSD sẽ giúp tăng tốc độ đọc ghi, cải thiện đáng kể hiệu suất.
    • CPU: 1-2 nhân CPU là đủ để bắt đầu, nhưng nếu bạn có nhiều dự án hoặc các pipeline phức tạp, việc có nhiều nhân CPU hơn sẽ giúp xử lý công việc nhanh hơn.

Về phần mềm, bạn cần một máy chủ chạy hệ điều hành Ubuntu 20.04 (Focal Fossa) đã được cài đặt và có quyền truy cập sudo. Nếu bạn muốn tìm hiểu thêm về các nền tảng Linux hoặc hệ điều hành nguồn gốc của Ubuntu, hãy tham khảo các bài viết LinuxDebian.

Cập nhật hệ thống và các công cụ hỗ trợ cần thiết

Sau khi đã đảm bảo về mặt phần cứng, bước tiếp theo là cập nhật hệ thống của bạn lên phiên bản mới nhất. Việc này giúp vá các lỗ hổng bảo mật và đảm bảo tính tương thích của các gói phần mềm. Hãy mở terminal và chạy các lệnh sau:

sudo apt update
sudo apt upgrade -y

Lệnh sudo apt update sẽ làm mới danh sách các gói phần mềm từ các kho lưu trữ, trong khi sudo apt upgrade sẽ tiến hành nâng cấp tất cả các gói đã cài đặt lên phiên bản mới nhất. Tùy chọn -y sẽ tự động xác nhận mọi câu hỏi, giúp quá trình diễn ra nhanh chóng hơn.

Ngoài ra, chúng ta cũng cần cài đặt một vài công cụ hỗ trợ phổ biến có thể sẽ cần đến trong quá trình cài đặt và sử dụng sau này, chẳng hạn như wgetcurl để tải xuống các tệp từ internet:

sudo apt install wget curl -y

Việc chuẩn bị kỹ lưỡng môi trường làm việc sẽ giúp quá trình cài đặt Jenkins diễn ra suôn sẻ và tránh được những lỗi không đáng có. Bây giờ, hệ thống của bạn đã sẵn sàng cho bước tiếp theo: cài đặt Java.

Cài đặt Java làm tiền đề cho Jenkins

Một trong những yêu cầu tiên quyết và không thể thiếu để Jenkins có thể hoạt động chính là Môi trường thực thi Java (Java Runtime Environment – JRE). Việc cài đặt đúng phiên bản Java tương thích là bước nền tảng để đảm bảo máy chủ Jenkins của bạn khởi động và vận hành một cách chính xác.

Lý do Jenkins cần Java và phiên bản tương thích

Jenkins là một ứng dụng được xây dựng hoàn toàn trên nền tảng Java. Điều này có nghĩa là nó không thể chạy nếu không có JRE. Java cung cấp một môi trường đa nền tảng, cho phép Jenkins có thể được cài đặt và chạy trên nhiều hệ điều hành khác nhau như Linux, Windows hay macOS mà không cần phải thay đổi mã nguồn.

Vấn đề tương thích phiên bản Java là cực kỳ quan trọng. Các phiên bản Jenkins khác nhau yêu cầu các phiên bản Java khác nhau. Kể từ cuối năm 2022, Jenkins đã yêu cầu tối thiểu Java 11 hoặc Java 17 để hoạt động. Các phiên bản Java cũ hơn như Java 8 không còn được hỗ trợ cho các bản phát hành Jenkins mới nhất. Sử dụng phiên bản Java không tương thích sẽ dẫn đến lỗi ngay khi bạn cố gắng khởi động dịch vụ Jenkins. Vì vậy, việc kiểm tra tài liệu chính thức của Jenkins để biết phiên bản Java được khuyến nghị là một thói quen tốt. Trong hướng dẫn này, chúng ta sẽ cài đặt OpenJDK 11, một phiên bản ổn định và được hỗ trợ dài hạn (LTS), hoàn toàn tương thích với Jenkins.

Hướng dẫn cài đặt OpenJDK trên Ubuntu 20.04

OpenJDK là phiên bản mã nguồn mở của Java Development Kit (JDK) và hoàn toàn miễn phí. Việc cài đặt OpenJDK trên Ubuntu 20.04 rất đơn giản thông qua trình quản lý gói apt.

Đầu tiên, hãy mở terminal và chạy lệnh sau để cài đặt OpenJDK 11:

sudo apt install openjdk-11-jdk -y

Lệnh này sẽ tự động tải xuống và cài đặt tất cả các gói cần thiết cho Java Development Kit phiên bản 11. Sau khi quá trình cài đặt hoàn tất, bạn cần kiểm tra lại để chắc chắn rằng Java đã được cài đặt thành công và hệ thống đang nhận diện đú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ị trên terminal 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)

Hình minh họa

Kết quả này xác nhận rằng OpenJDK 11 đã được cài đặt đúng cách. Bây giờ, hệ thống của bạn đã có nền tảng Java cần thiết. Chúng ta đã sẵn sàng để chuyển sang bước thêm kho lưu trữ của Jenkins và tiến hành cài đặt.

Thêm kho lưu trữ Jenkins chính thức và cập nhật hệ thống

Jenkins không có sẵn trong kho lưu trữ mặc định của Ubuntu. Vì vậy, để cài đặt và nhận được các bản cập nhật mới nhất một cách dễ dàng, chúng ta cần thêm kho lưu trữ chính thức của Jenkins vào hệ thống. Quá trình này bao gồm hai bước chính: thêm khóa GPG để xác thực gói và sau đó thêm địa chỉ kho lưu trữ.

Thêm khóa GPG và kho lưu trữ Jenkins

Khóa GPG (GNU Privacy Guard) hoạt động như một chữ ký số, 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 pháp và chưa bị can thiệp. Đây là một bước bảo mật quan trọng.

Đầu tiên, chúng ta sẽ tải khóa GPG của Jenkins về và lưu vào hệ thống. Hãy sử dụng lệnh curl để thực hiện việc này:

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 thực hiện một số việc: curl -fsSL tải xuống khóa một cách an toàn. Sau đó, kết quả được chuyển qua lệnh sudo tee để ghi vào tệp /usr/share/keyrings/jenkins-keyring.asc. Việc lưu khóa vào thư mục keyrings là cách làm được khuyến nghị trên các phiên bản Ubuntu mới.

Sau khi đã có khóa, bước tiếp theo là 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

Hình minh họa

Lệnh echo này tạo ra một dòng cấu hình cho kho lưu trữ, chỉ định rằng các gói từ địa chỉ này sẽ được xác thực bằng khóa mà chúng ta vừa thêm (signed-by=...). Sau đó, nó được ghi vào một tệp mới là jenkins.list trong thư mục /etc/apt/sources.list.d/. Việc tạo một tệp riêng giúp quản lý các kho lưu trữ của bên thứ ba dễ dàng hơn.

Cập nhật danh sách gói để chuẩn bị cài đặt Jenkins

Bây giờ, kho lưu trữ Jenkins đã được thêm vào hệ thống. Tuy nhiên, trình quản lý gói apt vẫn chưa biết về sự tồn tại của nó. Chúng ta cần chạy lại lệnh sudo apt update để apt đọc tệp cấu hình mới và tải về danh sách các gói có sẵn từ kho lưu trữ Jenkins.

sudo apt update

Sau khi chạy lệnh 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 có nghĩa là hệ thống của bạn đã nhận diện thành công kho lưu trữ mới và sẵn sàng để cài đặt Jenkins. Mọi thứ đã được chuẩn bị xong, hãy cùng chuyển sang phần cài đặt chính thức.

Tiến hành cài đặt Jenkins và khởi động dịch vụ

Khi môi trường đã được chuẩn bị và kho lưu trữ chính thức của Jenkins đã được thêm vào hệ thống, quá trình cài đặt Jenkins giờ đây trở nên vô cùng đơn giản. Chúng ta sẽ sử dụng trình quản lý gói apt để thực hiện việc này, sau đó khởi động và kiểm tra trạng thái của dịch vụ để đảm bảo mọi thứ hoạt động như mong đợi.

Lệnh cài đặt Jenkins trên Ubuntu 20.04

Với việc đã cập nhật danh sách gói ở bước trước, hệ thống của bạn đã biết nơi để tìm và tải về Jenkins. Bây giờ, bạn chỉ cần thực thi một lệnh duy nhất trong terminal:

sudo apt install jenkins -y

Trình quản lý gói apt sẽ tự động xử lý mọi thứ. Nó sẽ tải xuống gói Jenkins cùng với các phụ thuộc cần thiết khác, sau đó giải nén và cài đặt chúng vào đúng vị trí trên hệ thống của bạn. Quá trình này cũng sẽ tự động tạo một người dùng hệ thống riêng có tên là jenkins để chạy dịch vụ. Việc sử dụng một người dùng riêng biệt là một biện pháp bảo mật tốt, giúp cô lập quyền hạn của Jenkins và hạn chế rủi ro an ninh.

Quá trình cài đặt có thể mất vài phút tùy thuộc vào tốc độ mạng và hiệu năng của máy chủ. Sau khi hoàn tất, dịch vụ Jenkins sẽ được cấu hình để tự động khởi động cùng hệ thống.

Hình minh họa

Khởi động và kiểm tra trạng thái dịch vụ Jenkins

Thông thường, sau khi cài đặt, dịch vụ Jenkins sẽ tự động được khởi động. Tuy nhiên, để chắc chắn, chúng ta nên tự kiểm tra và quản lý nó bằng systemctl, công cụ quản lý dịch vụ tiêu chuẩn trên Ubuntu.

Đầu tiên, hãy kiểm tra trạng thái của dịch vụ Jenkins bằng lệnh:

sudo systemctl status jenkins

Nếu Jenkins đang chạy đúng cách, bạn sẽ thấy một đầu ra tương tự như sau, với trạng thái active (running) màu xanh lá cây:

● jenkins.service - Jenkins Continuous Integration Server
     Loaded: loaded (/lib/systemd/system/jenkins.service; enabled; vendor preset: enabled)
     Active: active (running) since Thu 2023-11-23 10:30:00 UTC; 5min 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

Hình minh họa

Nếu dịch vụ không chạy (trạng thái là inactive hoặc failed), bạn có thể khởi động nó theo cách thủ công bằng lệnh:

sudo systemctl start jenkins

Để đảm bảo Jenkins sẽ tự động khởi động lại mỗi khi bạn reboot máy chủ, hãy kích hoạt dịch vụ bằng lệnh sau:

sudo systemctl enable jenkins

Vậy là Jenkins đã được cài đặt và đang chạy trên máy chủ của bạn. Bước tiếp theo là thực hiện các cấu hình cơ bản ban đầu thông qua giao diện web để có thể bắt đầu sử dụng.

Cấu hình cơ bản để bắt đầu sử dụng Jenkins

Sau khi cài đặt và khởi động thành công dịch vụ, Jenkins đã sẵn sàng để bạn thực hiện các bước thiết lập ban đầu. Quá trình này được thực hiện hoàn toàn qua giao diện web và bao gồm việc mở khóa Jenkins, cài đặt các plugin cần thiết và tạo tài khoản quản trị đầu tiên.

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 giao diện web, bạn hãy mở trình duyệt và nhập vào đị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.

Một vấn đề thường gặp ở bước này là không thể kết nối được do tường lửa (firewall) của máy chủ đang chặn cổng 8080. Nếu bạn đang sử dụng UFW (Uncomplicated Firewall) trên Ubuntu, bạn cần cho phép truy cập vào cổng này. Hãy chạy lệnh sau trong terminal:

sudo ufw allow 8080

Sau đó, kiểm tra lại trạng thái của UFW để chắc chắn rằng quy tắc đã được thêm:

sudo ufw status

Bây giờ, hãy tải lại trang trong trình duyệt. Bạn sẽ thấy màn hình “Unlock Jenkins”, yêu cầu bạn nhập một mật khẩu quản trị viên ban đầu để chứng minh bạn có quyền truy cập vào máy chủ.

Hình minh họa

Để lấy mật khẩu này, bạn cần truy cập vào máy chủ qua terminal và đọc nội dung của tệp được chỉ định trên màn hình, thường là /var/lib/jenkins/secrets/initialAdminPassword. Sử dụng lệnh cat với quyền sudo để xem mật khẩu:

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

Hình minh họa

Thiết lập tài khoản quản trị và plugin cơ bản

Sau khi mở khóa thành công, Jenkins sẽ đưa bạn đến trang “Customize Jenkins”. Tại đây, bạn có hai lựa chọn:

  1. Install suggested plugins: Jenkins sẽ tự động cài đặt một bộ plugin phổ biến và được đề xuất, phù hợp cho hầu hết các trường hợp sử dụng cơ bản. Đây là lựa chọn tốt nhất cho người mới bắt đầu.
  2. Select plugins to install: Cho phép bạn tự tay lựa chọn các plugin mình muốn cài đặt. 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ì.

Chúng ta sẽ chọn “Install suggested plugins”. Jenkins sẽ bắt đầu quá trình tải về và cài đặt các plugin này. Bạn có thể theo dõi tiến trình trực tiếp trên màn hình.

Hình minh họa

Khi quá trình cài đặt plugin hoàn tất, bước cuối cùng là tạo tài khoản quản trị viên đầu tiên. Thay vì tiếp tục sử dụng mật khẩu ban đầu khó nhớ, bạn nên tạo một tài khoản của riêng mình. Điền các thông tin được yêu cầu, bao gồm username, password, tên đầy đủ và địa chỉ email.

Hình minh họa

Sau khi tạo tài khoản, Jenkins sẽ hỏi bạn về URL mặc định. Thường thì bạn có thể để nguyên giá trị được đề xuất. Nhấn “Save and Finish”.

Hình minh họa

Cuối cùng, bạn sẽ thấy trang “Jenkins is ready!”. Nhấn vào nút “Start using Jenkins” để được đưa đến trang quản trị chính.

Hình minh họa

Chúc mừng! Bạn đã cài đặt và cấu hình thành công Jenkins trên máy chủ Ubuntu 20.04. Giờ đây, bạn đã có một công cụ CI/CD mạnh mẽ sẵn sàng để tự động hóa các dự á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ố không mong muốn. Việc biết cách chẩn đoán và xử lý các vấn đề này 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. Dưới đây là một số lỗi thường gặp và cách khắc phục chúng.

Jenkins không khởi động hoặc lỗi dịch vụ

Đây là một trong những vấn đề phổ biến nhất. Bạn cố gắng khởi động dịch vụ nhưng nó lại thất bại hoặc dừng ngay lập tức.

  • Triệu chứng: Khi chạy sudo systemctl status jenkins, bạn thấy trạng thái là failed hoặc inactive (dead).
  • Chẩn đoán và giải pháp:
    1. Kiểm tra logs: Cách tốt nhất để tìm ra nguyên nhân là xem nhật ký hệ thống của dịch vụ Jenkins. Sử dụng lệnh sau để xem các log gần nhất:
      sudo journalctl -u jenkins -n 50 --no-pager
      

      Lệnh này sẽ hiển thị 50 dòng log cuối cùng của dịch vụ Jenkins. Hãy tìm các dòng có chữ “ERROR” hoặc “FATAL”.

    2. Vấn đề về phiên bản Java: Một nguyên nhân phổ biến là do phiên bản Java không tương thích hoặc hệ thống không tìm thấy Java. Log có thể báo lỗi như Unsupported major.minor version. Hãy đảm bảo bạn đã cài đặt đúng phiên bản Java (11 hoặc 17) và có thể kiểm tra bằng lệnh java -version. Bạn cũng có thể tìm hiểu sâu hơn về Bash là gì để làm quen với dòng lệnh trên Linux, giúp bạn thao tác hiệu quả hơn.
    3. Thiếu bộ nhớ (RAM): Nếu máy chủ của bạn có quá ít RAM, Java Virtual Machine (JVM) có thể không đủ bộ nhớ để khởi động, gây ra lỗi “Out of Memory”. Hãy kiểm tra yêu cầu hệ thống và đảm bảo máy chủ của bạn có đủ tài nguyên. Thông tin chi tiết về RAM là gì và các loại RAM như DDR4 là gì có thể giúp bạn lựa chọn đúng phần cứng phù hợp.
    4. Lỗi cấu hình: Đôi khi, một thay đổi sai trong tệp cấu hình của Jenkins (thường nằm ở /etc/default/jenkins) có thể ngăn dịch vụ khởi động. Hãy kiểm tra lại các thay đổi bạn đã thực hiện.

Vấn đề kết nối và truy cập giao diện web Jenkins

Bạn đã xác nhận rằng dịch vụ Jenkins đang chạy (active (running)) nhưng lại không thể truy cập vào giao diện web qua trình duyệt.

  • Triệu chứng: Trình duyệt báo lỗi “This site can’t be reached” hoặc “Connection timed out”.
  • Chẩn đoán và giải pháp:
    1. Kiểm tra tường lửa (Firewall): Đây là nguyên nhân hàng đầu. Tường lửa của máy chủ hoặc của nhà cung cấp dịch vụ đám mây (như AWS Security Group, Azure NSG) có thể đang chặn kết nối đến cổng 8080.
      • Đối với UFW trên Ubuntu, hãy chắc chắn bạn đã chạy lệnh: sudo ufw allow 8080.
      • Kiểm tra lại trạng thái: sudo ufw status.
    2. Kiểm tra xem Jenkins có đang lắng nghe trên đúng cổng không: Sử dụng lệnh netstat hoặc ss để xem các cổng đang mở.
      sudo ss -ltn | grep 8080
      

      Nếu lệnh này trả về kết quả, nó cho thấy Jenkins đang lắng nghe trên cổng 8080. Nếu không, có thể Jenkins đã được cấu hình để chạy trên một cổng khác. Hãy kiểm tra tệp /etc/default/jenkins để xem giá trị của biến HTTP_PORT.

    3. Kiểm tra địa chỉ IP: Đảm bảo bạn đang sử dụng đúng địa chỉ IP công khai (public IP) của máy chủ, chứ không phải IP nội bộ (private IP) hoặc localhost.
    4. Dịch vụ bị treo: Mặc dù hiếm gặp, đôi khi dịch vụ Jenkins có thể ở trạng thái “running” nhưng không phản hồi. Trong trường hợp này, hãy thử khởi động lại dịch vụ:
      sudo systemctl restart jenkins
      

Bằng cách kiểm tra có hệ thống từ log, tường lửa cho đến cấu hình, bạn có thể nhanh chóng xác định và giải quyết hầu hết các vấn đề cơ bản sau khi cài đặt Jenkins.

Best Practices khi sử dụng Jenkins trên Ubuntu 20.04

Việc cài đặt thành công Jenkins chỉ là bước khởi đầu. Để vận hành một hệ thống Jenkins hiệu quả, an toàn và ổn định trong dài hạn, bạn nên tuân thủ một số nguyên tắc và thực hành tốt nhất (best practices). Những điều này sẽ giúp bạn tránh được các vấn đề về hiệu suất, bảo mật và mất mát dữ liệu.

  • Luôn giữ hệ thống và Jenkins được cập nhật thường xuyên
    Bảo mật là yếu tố tối quan trọng. Jenkins và các plugin của nó thường xuyên được cập nhật để vá các lỗ hổng bảo mật và sửa lỗi. Hãy tạo thói quen kiểm tra các bản cập nhật trong giao diện quản trị Jenkins (Manage Jenkins > Plugins > Updates) ít nhất mỗi tuần một lần. Đồng thời, đừng quên cập nhật hệ điều hành Ubuntu của bạn bằng sudo apt update && sudo apt upgrade để đảm bảo nền tảng bên dưới cũng được bảo vệ.
  • Tạo backup cấu hình và dữ liệu định kỳ
    Cấu hình các pipeline, dự án và thông tin người dùng trong Jenkins rất quý giá. Sẽ là một thảm họa nếu bạn mất tất cả dữ liệu này do lỗi phần cứng hoặc sự cố ngoài ý muốn. Hãy thiết lập một cơ chế sao lưu tự động. Bạn có thể sử dụng plugin như “ThinBackup” hoặc viết một kịch bản shell đơn giản để nén toàn bộ thư mục JENKINS_HOME (thường là /var/lib/jenkins) và lưu trữ nó ở một nơi an toàn khác (ví dụ: Amazon S3, Google Cloud Storage) một cách định kỳ.
  • 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 điều này cũng là một con dao hai lưỡi. Mỗi plugin bạn cài đặt sẽ tiêu tốn thêm tài nguyên (RAM, CPU) và có thể gây ra xung đột hoặc các vấn đề về độ ổn định. Hãy tuân thủ nguyên tắc tối giản: chỉ cài đặt những plugin mà bạn thực sự cần cho quy trình làm việc của mình. Thường xuyên rà soát danh sách các plugin đã cài đặt 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 hàng ngày. 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 ở mức tối thiểu cần thiết để thực hiện công việc của họ. Ví dụ, một nhà phát triển chỉ cần quyền xem và kích hoạt build cho dự án của họ, 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 nếu một tài khoản bị xâm phạm.

Áp dụng những thực hành tốt này không chỉ giúp máy chủ Jenkins của bạn chạy mượt mà hơn mà còn tăng cường đáng kể tính bảo mật và độ tin cậy, biến nó trở thành một tài sản vững chắc trong quy trình phát triển phần mềm của bạn.

Kết luận

Qua bài viết này, chúng ta đã cùng nhau đi qua một hành trình chi tiết, từ việc chuẩn bị môi trường, cài đặt Java, cho đến việc thêm kho lưu trữ và hoàn tất cài đặt Jenkins trên hệ điều hành Ubuntu 20.04. Bạn cũng đã được hướng dẫn cách thực hiện các cấu hình ban đầu, khắc phục sự cố và nắm được những thực hành tốt nhất để vận hành Jenkins một cách hiệu quả và an toàn. Jenkins không chỉ là một công cụ; nó là trung tâm của một quy trình làm việc hiện đại, giúp tự động hóa và tối ưu hóa vòng đời phát triển phần mềm. Lợi ích mà nó mang lại trong việc triển khai CI/CD là không thể phủ nhận, từ việc tăng tốc độ phát hành sản phẩm, cải thiện chất lượng mã nguồn cho đến việc giảm thiểu rủi ro do sai sót của con người.

Kiến thức sẽ chỉ thực sự hữu ích khi được áp dụng vào thực tế. Vì vậy, tôi khuyến khích bạn đừng ngần ngại bắt tay vào thực hành ngay. Hãy thử cài đặt Jenkins trên máy chủ của riêng mình, dù là máy ảo hay VPS, để trải nghiệm sức mạnh của tự động hóa. Việc tự mình thiết lập và cấu hình sẽ mang lại cho bạn những kinh nghiệm quý báu không thể có được chỉ qua việc đọc tài liệu.

Sau khi đã cài đặt thành công, đây mới chỉ là điểm khởi đầu. Bước tiếp theo trên hành trình của bạn là khám phá các tính năng nâng cao hơn. Hãy thử tạo pipeline đầu tiên của mình để tự động build một dự án từ GitHub, tích hợp Jenkins với các công cụ kiểm thử tự động, hoặc khám phá hệ sinh thái plugin đồ sộ để mở rộng khả năng của nó. Chúc bạn thành công trên con đường chinh phục và làm chủ quy trình CI/CD với Jenkins.

Đánh giá
Tác giả

Mạnh Đức

Có cao nhân từng nói rằng: "Kiến thức trên thế giới này đầy rẫy trên internet. Tôi chỉ là người lao công cần mẫn đem nó tới cho người cần mà thôi !"

Chia sẻ