Tích hợp liên tục (CI) Jenkins với Git cơ bản

Tích hợp liên tục (CI) Jenkins với Git cơ bảnCuongquach.com | Tích hợp liên tục Jenkins và Git là điều cực kì quan trọng trong hoạt động CI/CD với các hệ thống phát triển vòng đời sản phẩm phần mềm. Vì hầu như ngày nay các dự án ứng dụng đều được lưu trữ trên các SVC như Git Remote Repository như Github, Gitlab,.. hoặc dịch vụ Git Repository nội bộ. Khi xây dựng các quy trình CI/CD thì đầu tiên thường luôn phải xác định được nguồn Git Repository để xác định được đối tượng mã nguồn dự án phần mềm mà CI/CD Server sẽ hoạt động. Ở bài viết này chúng ta sẽ tìm hiểu cách sử dụng Jenkins và Git cơ bản ra sao nhé.

tich-hop-lien-tuc-git-jenkins

Jenkins Git plugin

Jenkins Git plugin là tiện ích quan trọng của Jenkins để hỗ trợ kết nối Git với cả local repository và remote repository, nhưng phần sử dụng nhiều nhất là kết nối với remote repository trên GitHub, GitLab, Bitbucket hoặc thậm chí là hệ thống nội bộ.

Tích hợp liên tục (CI) Git sẽ hoạt động như thế nào ?

Khi bạn tạo một Project build job thì Jenkins Git plugin sẽ cung cấp cho bạn option lựa chọn kĩ thuật Git trong phần quản lý SCM. Bạn sẽ phải khai báo URL về Git Repository của bạn. Kế đến khi build job chạy thì Jenkins Git plugin sẽ thực hiện hoạt động cơ bản đó là truy vấn ‘git pull‘ giúp clone remote repository và lưu toàn bộ dữ liệu Repository đó ở thư mục Jenkins workspace tương ứng của từng Project.

Kế đến bắt đầu từ thư mục Workspace đó bạn sẽ tiến hành các hoạt động như biên dịch, unit test, đóng gói,…. hoặc các hoạt động khác mà bạn mong muốn trong quá trình Jenkins build job.

mô hình ci cd jenkins git cơ bản
mô hình ci cd jenkins git cơ bản

Cấu hình Jenkins Project tích hợp Git cơ bản

Vậy giờ chúng ta sẽ thử lab một bài đơn giản để hiểu hoạt động CI đơn giản giữa JenkinsGit nhé :

  • Jenkins sẽ git pull/git clone Github Repository – Golang app
  • Jenkins sẽ lưu các dữ liệu Github Repository đó ở workspace
  • Từ đó Jenkins sẽ tiến hành build ứng dụng Golang và chạy ứng dụng đó xuất output ra  console output.

Đầu tiên ta sẽ khởi tạo một ‘Freestyle Project‘ tên ví dụ là : jenkins-git-cuongquach-1 .

jenkins git ci
jenkins git ci

Cấu hình Source Code Management

Sau đó bạn sẽ được tiến vào trang cấu hình Project Build, bạn nhảy sang tab ‘Source Code Management‘. Giờ ta giả sử sử dụng một Github Repository ở chế độ public, mình điền thông tin Github Repository của mình cho quá trình làm lab.

https://github.com/CuongQuach-Lab/hello-go-app.git
jenkins git ci - 2
jenkins git ci – 2

Cấu hình Build Environemnt

Bạn cần cấu hình “Delete workspace before build starts” để đảm bảo thư mục Workspace luôn luôn rỗng không chứa file/thư mục cũ nhằm tránh xung đột với dữ liệu Git clone được từ Git Repository.

jenkins git ci - 3
jenkins git ci – 3

Cấu hình Jenkins build

Sau khi Repository được plugin Git của Jenkins tiến hành clone dữ liệu code repository về workspace của project đó thì mình sẽ chạy kịch bản script sau tiến hành build ứng dụng Golang của mình và thực hiện tác vụ in nội dung ra màn hình console cũng như xuất nội dung vào file text. Thư mục hiện hành khi build lúc này sẽ là thư mục Workspace, có thể truy xuất ra biến $WORKSPACE .

Workspace của Project của ta mặc định sẽ ở đường dẫn như sau :

/var/lib/jenkins/workspace/jenkins-git-cuongquach-1

Nội dung kịch bản Shell Script:

echo "Build simple Golang App"
export GOROOT=/usr/local/go && export GOPATH=${WORKSPACE} && export PATH=$PATH:/usr/local/go/bin
pwd
echo "${WORKSPACE}"
go build -o app.go
./app.go
./app.go >> /tmp/demo.txt
cat /tmp/demo.txt
jenkins git ci - 4
jenkins git ci – 4

Sau đó bạn lưu lại cấu hình Project Build và chọn “Build Now” để tiến hành Build source code Golang từ Github Repository mà bạn đã chỉ định. Ở phần “Build History” thì màu xanh dương là build thành công, màu đỏ là build thất bại.

jenkins git ci - 5
jenkins git ci – 5

Khi bạn bấm vào phần các kết quả Build và chọn “Console Output” sẽ thấy diễn biến nội dung thực thi của quá trình build theo kịch bản script mà bạn đã cấu hình.

jenkins git ci - 6
jenkins git ci – 6

Kế đến bạn kiểm tra Workspace dành cho Project của bạn thì sẽ thấy source code đã được Jenkins clone về.

jenkins git ci - 7
jenkins git ci – 7

+ Trường hợp sử dụng Build Trigger

Như bạn thấy thì ta thường hoạt động manual bằng cách ấn ‘Build Now‘ để Jenkins tiến hành build Project đó. Nhưng nếu bạn muốn thiết lập cronjob để Jenkins build Project cụ thể thì như thế nào ?!  Nếu bạn muốn cấu hình cron thì ở phần “Build Triggers” hãy chọn “Build periodically” và cấu hình y như cronjob trên Linux với cú pháp có thể tham khảo dấu icon “?“.

jenkins git ci - 8
jenkins git ci – 8

Lúc đó bạn mà quay bước đi 15 phút thôi, thì sẽ thấy Jenkins đã tự build rất là nhiều lần tầm 15 lần , điều đó vẫn thể hiện qua panel “Build History“.

jenkins git ci - 9
jenkins git ci – 9

Nguồn: https://cuongquach.com/

Previous articleEbook 101 CCNA Labs with Solutions (PDF)
Next articleEbook Lập trình Hướng đối tượng với Java (PDF)
Bạn đang theo dõi website "https://cuongquach.com/" nơi lưu trữ những kiến thức tổng hợp và chia sẻ cá nhân về Quản Trị Hệ Thống Dịch Vụ & Mạng, được xây dựng lại dưới nền tảng kinh nghiệm của bản thân mình, Quách Chí Cường. Hy vọng bạn sẽ thích nơi này !