Thiết lập hệ thống tích hợp liên tục bằng Jenkins trên Ubuntu 20.04

Lượt xem
Home

Jenkins là một mã nguồn mở nhằm mục đích tự động hóa các tác vụ kỹ thuật lặp đi lặp lại liên quan đến việc tích hợp và phân phối phần mềm liên tục. Với một hệ sinh thái bổ trợ mạnh mẽ và hỗ trợ rộng rãi, Jenkins có thể xử lý một loạt khối lượng công việc khác nhau để xây dựng, thử nghiệm và triển khai ứng dụng. Với hướng dẫn về cách cài đặt hệ thống tích hợp liên tục bằng Jenkins trên Ubuntu 20.04 này, sẽ giúp bạn trình bày cách thiết lập Jenkins để tự động kiểm tra ứng dụng khi các thay đổi được đẩy vào kho lưu trữ GitHub.

Điều kiện để cài đặt hệ thống tích hợp liên tục bằng Jenkins trên Ubuntu 20.04

Để làm theo hướng dẫn này, bạn sẽ cần một Ubuntu server 20.04 với ít nhất 1GB RAM đã cài đặt Jenkins an toàn từ nguồn đáng tin cậy. Để bảo mật web interface đúng cách, bạn sẽ cần gán một tên miền cho Jenkins server. Ubuntu server cần cài đặt các chương trình sau:

  • Đã cài đặt Jenkins.
  • Đã cài đặt Nginx. (Hướng dẫn cách cài đặt Nginx trên Ubuntu 20.04 tại đây)
  • Đã thiết lập bảo mật Nginx với Let’s Encrypt.
  • Cấu hình Jenkins với SSL sử dụng Nginx làm Reverse Proxy.
  • Đã cài đặt Docker.

Bước 1: Thêm Jenkins User vào Docker Group

Khi bạn đã thực hiện theo điều kiện, tức là cả Jenkins và Docker đều được cài đặt trên server của bạn. Tuy nhiên, mặc định người dùng Linux chịu trách nhiệm chạy quy trình Jenkins không thể truy cập vào Docker.

Vì vậy, cần phải thêm người dùng jenkins vào docker group bằng lệnh usermod:

sudo usermod -aG docker jenkins

Bạn có thể liệt kê các thành viên của docker group để xác nhận rằng người dùng jenkins đã được thêm thành công bằng câu lệnh:

grep docker /etc/group
Output
docker:x:999:sammy,jenkins

Để sử dụng Jenkins với tư cách thành viên mới, bạn cần khởi động lại dịch vụ:

sudo systemctl restart jenkins

Nếu bạn đã cài đặt Jenkins với các plugin mặc định, bạn có thể cần kiểm tra để đảm bảo rằng cả dockerdocker-pipeline đã được bật. Thực hiện nhấp vào Manage Jenkins từ thanh sidebar, sau đó chọn Manage plugin từ menu.

Nhấp vào danh mục Available của menu plugin để tìm kiếm plugin mới và nhập từ khóa docker vào thanh tìm kiếm. Nếu cả Docker PipelineDocker plugin đều được trả về dưới dạng tùy chọn và chưa được bật, hãy chọn cả hai và khi có thông báo, hãy cho phép Jenkins khởi động lại bằng các plugin mới được kích hoạt.

Docker Pipeline và Plugin
Docker Pipeline và Plugin

Quá trình này sẽ mất khoảng một phút và sau đó trang sẽ tự động làm mới.

Bước 2: Tạo Personal Access Token trong GitHub

Để Jenkins thao tác với các dự án GitHub của bạn, thì bạn cần tạo một mã truy cập cá nhân (Personal Access Token) mới trong tài khoản GitHub.

Bắt đầu, bạn truy cập GitHub và thực hiện đăng nhập vào tài khoản chứa mã nguồn mà bạn muốn tích hợp. Sau đó, nhấp vào biểu tượng người dùng phía góc trên bên phải và chọn Settings từ menu như sau:

Chọn Settings trong GitHub
Chọn Settings trong GitHub

Tiếp theo, tìm phần Developer settings và nhấp vào Personal Access Token.

Developer trong Settings
Developer trong Settings

Nhấp vào nút Generate new token để tạo một mã truy cập mới.

Tạo mã truy cập mới
Tạo mã truy cập mới

Sau đó, bạn sẽ được đưa đến trang nơi bạn có thể xác định phạm vi (scope) cho Access Token mới này.

Trong hộp Mô tả mã thông báo (Token description), thực hiện thêm mô tả cho phép bạn nhận ra rằng Access token này sử dụng cho dự án nào, phạm vi như thế nào để tránh sự nhầm lẫn với các token có mục đích sử dụng khác.

Hộp mô tả thông báo (Token description)
Hộp mô tả thông báo (Token description)

Trong phần Select Scope, bạn hãy tích vào các phần repo:status, repo:public_repoadmin:org_hook. Các thành phần này sẽ cho phép Jenkins cập nhật trạng thái và tạo webhook cho dự án. Nếu đang sử dụng kho lưu trữ riêng tư, bạn sẽ chọn phần repo chung bao gồm tất cả thay vì các tiểu mục nhỏ bên trong.

Cập nhật trạng thái trong Select Scope
Cập nhật trạng thái trong Select Scope

Khi hoàn tất chọn phạm vi, hãy nhấp vào Generate Token ở dưới cùng để hoàn thành.

Bạn sẽ được chuyển hướng trở lại trang Personal Access TokenPersonal Access Token mới của bạn vừa tạo sẽ được hiển thị ngay bên dưới:

Trang Personal Access Token
Trang Personal Access Token

Sao chép Access Token và lưu ngay vào một file ghi nhớ nào đó để có thể sử dụng sau này vì thông báo cho biết, không có cách nào để truy xuất lại Access Token sau khi thoát khỏi trang này.

Lưu ý: Như đã đề cập trong ảnh ở trên, vì lý do bảo mật, không có cách nào để hiển thị lại mã thông báo sau khi bạn rời khỏi trang này. Nếu bạn quên mất Access Token đã tạo thì bạn hãy xóa Access Token đó khỏi tài khoản GitHub của bạn rồi thực hiện tạo mã mới để sử dụng.

Bây giờ bạn đã có Access Token cho tài khoản GitHub của mình, tiếp theo bạn có thể cấu hình Jenkins để xem kho lưu trữ dự án của bạn. Đầu tiên, bạn thêm Personal Access Token vừa mới tạo trên GitHub vào Jenkins.

Cần thêm đoạn mã đó vào Jenkins server để có thể tự động thiết lập webhook đăng nhập vào Jenkins web interface bằng tài khoản quản trị mà bạn đã cấu hình trong khi cài đặt.

Nhấp vào tên người dùng ở góc trên cùng bên phải để truy cập cài đặt người dùng của bạn và từ đó, nhấp vào Credentials trong menu bên trái. :

Cài đặt người dùng
Cài đặt người dùng

Trên trang tiếp theo, nhấp vào mũi tên bên cạnh global trong Jenkins Scope. Nhấp vào Add credentials vào hộp thoại được mở lên ngay sau đó.

Nhấp vào Add credentials
Nhấp vào Add credentials

Sau đó, bạn sẽ nhận được một biểu mẫu để thêm thông tin tài khoản đăng nhập mới.

Trong phần Kind chọn phần Secret text. Trong trường Secret, bạn dán Personal Access Token GitHub đã tạo ở bước 1 vào. Điền vào trường Description để có thể xác định code đó để làm gì. Bạn nên chọn scopeglobal và trường ID có thể để trống như hình bên dưới.

Điền vào trường Description để xác định code làm gì
Điền vào trường Description để xác định code làm gì

Nhấp vào nút OK để hoàn tất thêm Personal Access Token GitHub vào Jenkins.

Bước 3: Thiết lập quyền truy cập của Jenkins với GitHub

Quay lại bảng điều khiển chính của Jenkins, thực hiện nhấp vào Manage Jenkins ở menu bên trái:

Bảng điều khiển Jenkins
Bảng điều khiển Jenkins

Trong danh sách các tác vụ trên, bạn chọn phần Configure System:

Cài đặt Jenkins
Cài đặt Jenkins

Tìm và chọn danh mục GitHub và thực hiện thêm GitHub server (Add GitHub Server) rồi chọn Github server của bạn.

Add GitHub Server
Add GitHub Server

Sau đó, một cửa sổ mở rộng để bạn nhập một số thông tin bổ sung của GitHub server đó và thực hiện chọn Personal Access Token GitHub:

Nhập thông tin bổ sung của GitHub server
Nhập thông tin bổ sung của GitHub server

Nhấp vào nút Test Connection để kiểm tra kết nối. Quá trình kiểm tra, Jenkins sẽ thực hiện lệnh gọi API thử nghiệm tới tài khoản của bạn và xác minh kết nối.

Kiểm tra kết nối
Kiểm tra kết nối

Nếu kết nối thành công sẽ được thông báo như hình trên. Nhấp vào nút Save để lưu các thay đổi cấu hình.

Để thiết lập hệ thống tích hợp liên tục bằng Jenkins, sử dụng VPS là một lựa chọn thường dùng. Giúp bạn có thể dễ dàng quản lý và cấu hình hệ thống tích hợp liên tục mà không cần lo lắng về vấn đề phần cứng và môi trường máy tính.

Muốn chạy Jenkins và các công cụ hỗ trợ tích hợp liên tục trên một VPS được quản lý chuyên nghiệp, bạn có thể tham khảo lựa chọn Vietnix – nhà cung cấp dịch vụ VPS hàng đầu tại Việt Nam. Với Vietnix, bạn sẽ được cung cấp các gói VPS với nhiều cấu hình khác nhau, đảm bảo đáp ứng được nhu cầu sử dụng như VPS Giá Rẻ, VPS Phổ Thông, VPS Cao Cấp và VPS NVMe.

Hơn nữa, Vietnix còn cung cấp công cụ quản trị VPS chuyên nghiệp để giúp bạn quản lý và vận hành hệ thống VPS của mình một cách hiệu quả. Với sự hỗ trợ 24/7 của đội ngũ chuyên gia giàu kinh nghiệm từ Vietnix, bạn có thể hoàn toàn tập trung vào việc thiết lập hệ thống tích hợp liên tục của mình mà không cần lo lắng về vấn đề kỹ thuật.

Liên hệ với Vietnix để biết thêm thông tin chi tiết về các gói VPS và được tư vấn lựa chọn gói phù hợp nhất.

Bước 4: Thiết lập Demonstration Application trên tài khoản GitHub

Để trình bày cách sử dụng Jenkins để kiểm tra một ứng dụng, hướng dẫn này sẽ sử dụng một chương trình cơ bản là “hello world” được tạo bằng Hapi.js. Bạn cần có bản sao code của chương trình này bằng cách fork kho lưu trữ của chương trình.

Truy cập kho lưu trữ của dự án và nhấp vào nút Fork ở góc trên bên phải để tạo một bản sao của kho lưu trữ trong tài khoản của bạn như sau:

Tạo bản sao lưu trữ trong tài khoản
Tạo bản sao lưu trữ trong tài khoản

Một bản sao của kho lưu trữ sẽ được thêm vào tài khoản của bạn ngay sau đó.

Kho lưu trữ chứa file pack.json xác định các phần phụ thuộc thời gian chạy và phát triển, cũng như cách hoạt động bao gồm cả phần kiểm . Các phần phụ thuộc có thể được cài đặt bằng cách chạy npm install và các kiểm tra có thể được chạy bằng cách sử dụng npm test.

Jenkinsfile cũng đã được thêm sẵn vào kho lưu trữ. Jenkins sẽ đọc tệp này để xác định các hành động sẽ chạy đối với kho lưu trữ để xây dựng, kiểm tra hoặc triển khai và tệp này được viết bằng bản khai báo của Jenkins Pipeline DSL.

Jenkinsfile trong kho lưu trữ hello-hapi sẽ trông như thế này:

#!/usr/bin/env groovy

pipeline {

    agent {
        docker {
            image 'node'
            args '-u root'
        }
    }

    stages {
        stage('Build') {
            steps {
                echo 'Building...'
                sh 'npm install'
            }
        }
        stage('Test') {
            steps {
                echo 'Testing...'
                sh 'npm test'
            }
        }
    }
}

Pipeline chứa toàn bộ định nghĩa mà Jenkins sẽ mô phỏng. Bên trong file có một thành phần agent chỉ định nơi các hành động trong pipeline sẽ thực thi. Để tách biệt các môi trường khỏi hệ thống server thì cần thử nghiệm trong các Docker Container, được chỉ định bởi docker agent.

Vì Hapi.js là một framework của Node.js, vậy nên phải sử dụng node của nút làm cơ sở. Cần định người dùng root trong container để người dùng có thể đồng thời ghi vào cả ổ đĩa đính kèm có chứa code đã kiểm xuất và ổ đĩa mà tập lệnh ghi output.

Tiếp theo, file xác định hai giai đoạn, tức là phân chia công việc hợp lý. Đặt tên cho giai đoạn đầu tiên là “Build” và giai đoạn thứ hai là “Test”. Bước Build sẽ in một thông báo chẩn đoán và sau đó chạy lệnh npm install để tải xuống các gói phụ thuộc cần thiết. Bước Test sẽ in một thông báo khác rồi chạy các kiểm tra như đã xác định trong file pack.json.

Bây giờ bạn đã có một kho lưu trữ với Jenkinsfile hợp lệ và có thể thiết lập Jenkins để xem kho lưu trữ, chạy file khi các thay đổi trên kho lưu trữ được thông báo.

Bước 5: Tạo một quy trình mới trong Jenkins

Bạn có thể thiết lập Jenkins để sử dụng Personal Access Token GitHub để xem kho lưu trữ.

Quay lại với bảng điều khiển chính của Jenkins, nhấp vào New Item trong menu bên trái:

Tạo một item mới
Tạo một item mới

Nhập tên cho quy trình mới của bạn trong trường Enter an item name. Sau đó, chọn loại pipeline:

Đặt tên cho quy trình mới
Đặt tên cho quy trình mới

Nhấp vào nút OK ở phía dưới để tiếp tục.

Trên màn hình kế tiếp, bạn chọn GitHub project để xác định dự án sẽ áp dụng và điền liên kết GitHub của dự án.

Lưu ý: Bạn cần đảm bảo trỏ tới nhánh của ứng dụng Hello Hapi bạn đã fork để Jenkins có quyền cấu hình webhook.

Điền liên kết GitHub của dự án
Điền liên kết GitHub của dự án

Tiếp theo, trong phần Build Triggers, bạn tích chọn GitHub hook trigger for GITScm polling như sau:

Tích chọn theo hướng dẫn
Tích chọn theo hướng dẫn

Phần Pipeline cần Jenkins chạy đường ống được xác định trong Jenkinsfile của kho lưu trữ nên bạn cần thay đổi từ Definition thành Pipeline script from SCM.

Trong hộp thoại mới bạn chọn Git trong menu SCM và thực hiện nhập lại URL của kho lưu trữ vào trường Repository URL như hình phía dưới.

Nhập lại URL của kho lưu trữ
Nhập lại URL của kho lưu trữ

Lưu ý: Ví dụ này sử dụng file tham chiếu Jenkinsfile có sẵn trong kho lưu trữ công cộng. Nếu dự án của bạn không thể truy cập công khai, bạn sẽ cần sử dụng nút thêm thông tin đăng nhập để thêm quyền truy cập bổ sung vào kho lưu trữ và thêm Personal Access Token như ở bước 1.

Khi hoàn tất các bước trên, đừng quên nhấp vào nút Save ở cuối trang để lưu lại các cấu hình.

Bước 6: Thực hiện bản dựng đầu tiên và cấu hình Webhook

Jenkins sẽ không tự động cấu hình webhook khi xác định đường dẫn cho kho lưu trữ trong giao diện. Để kích hoạt Jenkins thiết lập các hook thích hợp, bạn cần thực hiện quá trình tạo thủ công lần đầu tiên.

Trên trang chính pipeline, nhấp vào Build Now ngay trong menu bên trái:

Nhấn vào Build Now
Nhấn vào Build Now

Một bản dựng mới sẽ được sắp xếp lịch trình thực thi. Trong danh sách lịch sử bản dựng (Build History) ở góc dưới bên trái, một bản dựng mới sẽ xuất hiện trong giây lát. Ngoài ra, chế độ xem theo giai đoạn (Stage View) sẽ bắt đầu được vẽ như một biểu đồ trong khu vực chính của giao diện sẽ giúp quá trình theo dõi tiến trình chạy thử nghiệm khi các giai đoạn khác nhau được hoàn thành.

Stage View của Jenkins
Stage View của Jenkins

Trong danh sách lịch sử bản dựng, mỗi khi nhấp vào số được liên kết với bản dựng sẽ chuyển đến trang chi tiết bản dựng đó. Từ đây, bạn có thể nhấp vào nút Console Output trong menu bên trái để xem chi tiết các bước đã được chạy dưới dạng câu lệnh.

Console Output của Jenkins
Console Output của Jenkins

Nhấp vào mục Back to Project trên menu bên trái khi bạn hoàn tất để quay lại chế độ xem Pipeline chính.

Bây giờ đã xây dựng dự án lần đầu thành công, lúc này có thể yêu cầu Jenkins tạo webhook cho dự án bằng cách nhấp vào phần Configure trong menu bên trái của quy trình như sau:

Nhấn vào Configure
Nhấn vào Configure

Chỉ cần nhấp vào nút Save ở dưới cùng mà không cần thao tác hay thay đổi nào cả. Bây giờ, Jenkins đã có thông tin về dự án từ quá trình xây dựng ban đầu, sau đó sẽ đăng ký một webhook với dự án GitHub khi bạn lưu trang.

Bạn có thể xác minh điều này bằng cách truy cập kho lưu trữ GitHub của mình và nhấp vào nút Settings. Trên trang tiếp theo, nhấp vào Webhook từ menu bên. Bạn sẽ thấy Webhook Jenkins trong giao diện chính tương tự như hình sau:

Theo dõi Webhooks
Theo dõi Webhooks

Nếu vì bất kỳ lý do gì mà Jenkins không thể đăng ký hook (ví dụ: do thay đổi API hoặc ngừng hoạt động giữa Jenkins và Github), bạn có thể nhanh chóng tự thêm một hook khác bằng cách nhấp vào Add webhook và chắc chắn rằng Payload URL được đặt thành https:// my-jenkins-server:8080/github-webhookContent Type được đặt thành application/json, sau đó nhấp lại vào Add webhook ở phía cuối.

Thêm webhook
Thêm webhook

Khi bạn đẩy các thay đổi mới vào kho lưu trữ của mình, Jenkins sẽ được thông báo và sau đó thực hiện lấy mã mới và kiểm tra lại với một quy trình tương tự.

Để xác thực quy trình này, trong trang kho lưu trữ trên GitHub, bạn có thể nhấp vào nút Create new file ở bên trái nút Clone or download màu xanh lục:

Tạo file mới
Tạo file mới

Trên trang tiếp theo, chọn tên file và một số nội dung giả định như sau:

Đặt tên file
Đặt tên file

Nhấp vào nút Commit new file ở dưới cùng khi hoàn tất.

Khi đó, nếu bạn quay lại giao diện Jenkins, bạn sẽ thấy một bản dựng mới tự động bắt đầu được thông báo như bên dưới:

Bản dựng mới tự động bắt đầu
Bản dựng mới tự động bắt đầu

Bạn thấy rằng quá trình tích hợp liên tục này đã thành công, bạn có thể bắt đầu các bản dựng bổ sung tiếp theo bằng cách thực hiện các commit khác trên một bản sao cục bộ của kho lưu trữ và đẩy sao lưu lên GitHub.

Vietnix là một trong những nhà cung cấp dịch vụ VPS hàng đầu tại Việt Nam. Với hơn 10 năm kinh nghiệm hoạt động trong lĩnh vực này, đồng hành cùng 50.000+ khách hàng, Vietnix đã được khẳng định là một địa chỉ tin cậy của các doanh nghiệp và cá nhân có nhu cầu sử dụng dịch vụ VPS.

Đặc biệt, Vietnix luôn đặt chất lượng dịch vụ lên hàng đầu, đảm bảo cho khách hàng sử dụng VPS của họ với tốc độ truy cập nhanh chóng và ổn định, cùng với độ bảo mật cao nhất. Do đó, không có gì ngạc nhiên khi có tới 97% khách hàng của Vietnix đánh giá 5 sao và giới thiệu cho người khác sử dụng dịch vụ. Điều này là một minh chứng cho uy tín và đáng tin cậy của Vietnix trên thị trường VPS tại Việt Nam.

Vietnix cũng đã đạt được nhiều thành công và công nhận nhờ chất lượng dịch vụ xuất sắc mà công ty đã mang đến. Việc nhận giải thưởng Thương hiệu Việt Nam xuất sắc năm 2022 là một minh chứng cho sự cam kết của Vietnix trong việc cung cấp dịch vụ tốt nhất cho khách hàng.

Liên hệ với Vietnix theo những thông tin dưới đây để trải nghiệm dịch vụ VPS tốc độ cao ngay hôm nay.

  • Địa chỉ: 265 Hồng Lạc, Phường 10, Quận Tân Bình, Thành Phố Hồ Chí Minh
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn

Lời kết

Qua hướng dẫn về cách cài đặt hệ thống tích hợp liên tục bằng Jenkins trên Ubuntu 20.04 này, bạn có thể áp dụng việc cấu hình Jenkins để xem dự án GitHub và tự động kiểm tra mọi thay đổi mới được commit. Qua đó, tự động hóa quá trình làm việc để giảm tải các bước, nâng cao hiệu suất làm việc và cải thiện sai sót trong quá trình phát triển phần mềm. Nếu bạn thấy hướng dẫn này có hữu ích thì đừng quên bình luận và chia sẻ bài viết này nhé.

Chia sẻ lên

Theo dõi trên

Logo Google new

Đánh giá

5/5 - (175 bình chọn)

Hưng Nguyễn

Kết nối với mình qua

Icon Quote
Icon Quote
Đăng ký nhận tin
Để không bỏ sót bất kỳ tin tức hoặc chương trình khuyến mãi từ Vietnix

Bình luận

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận