Cài đặt và cấu hình Jenkins

Cài đặt và cấu hình Jenkins

August 10, 2018 1 By Nam Vu

I. Setup Jenkins chạy trên tomcat.

Setup Jenkins chạy trên tomcatTruy cập vào địa chỉ https://jenkins.io/ và tải jenkins về máy nhé.

Bạn sẽ thấy 2 cột, một cột Long-term Support (LTS) và một cột Weekly, ta sử dụng LTS để nó ổn định hơn nhé. Mình tải jenkis Generic Java package (.war), bạn sẽ nhận được file jenkins.war Ok. Giờ ta move jenkins.war vào thư mục /path/to/tomcat/webapps/ Mình ví dụ trên máy của mình nhé

mv /Users/nhs3108/Downloads/jenkins.war /Users/nhs3108/Tools/apache-
tomcat-9.0.0.M9/webapps/jenkins.war

Ok. Giờ thì start tomcat lên nhé. Sau khi start tomcat xong, bạn truy cập vào đường dẫn sau http://localhost:8080/jenkins/

II. Tạo User, quản lý Role và assign Role cho các User

Để cấu hình jenkins, bạn truy cập vào http://localhost:8080/jenkins/manage, ở đây bạn sẽ thấy 1 danh sách rất nhiều chức năng cho phần quản lý này.

1. Phân quyền user của Jenkins

Ở phần này, mình sẽ trình bày cách để tạo user, tạo ra các role và assign role cho user để phân quyền user. Mục đích là để quy định quyền hạn của user đối với toàn hệ thống jenkins cũng những đối với từng Project cụ thể

1.1. Tạo user

Truy cập tới địa chỉ http://localhost:8080/jenkins/securityRealm/addUser và giao diện cho phần tạo user sẽ như sau

Ok. Sau khi xác nhận tạo thành công, bạn sẽ thấy danh sách các user của Jenkins tại http://localhost:8080/jenkins/securityRealm/ Giao diện như dưới đây

1.2. Quản lý role

Đầu tiên, bạn hãy vào phần Manage Plugins và enable “Role-based Authorization Strategy”

Ok. Tiếp đến, truy cập vào Configure Global Security > Access Control > Authorization > Chọn phần Role-Based Strategy. Save lại. Tiếp tục truy cập vào Manage and Assign Roles. Giao diện như sau

Click vào phần Manage Roles. Bạn sẽ thấy hiện tại có một role admin, role admin này được cấp full tất cả mọi quyền .

Có 2 loại Role ở đây bao gồm

  • Global roles: Các role này có tầm ảnh hưởng tới toàn bộ hệ thống, nghĩa là nếu một User A được gán role X có quyền build job, thì User A này có khả năng build mọi job của mọi Project.
  • Project roles: Các role này có tầm ảnh hưởng ở mức thấp hơn. Ví dự ta có một role tên là tester_of_staging (có quyền build app), set pattern là staging. Thì nếu user được gán role “tester_of_staging” thì nó có thể build cho mọi job có chứa pattern này.

1.3. Assign role cho User

Để gán quyền hạn cho một đối tượng user, truy cập Assign Roles

Bây giờ, mình sẽ đi chi tiết hơn về phần quản lý role nhé. Đặt vấn đề là bạn cần 1 role mà tất cả những người có role đó đều có quyền build các job của test_server.

Vậy bạn cần làm những gì?

Tạo job có tên deploy_test_server_project_name_1 là job có khả năng deploy code mới nhất lên server test của dự án 1.

Ở phần “Project roles” tại Manage Roles ,Role to add : mình đặt là “deployer_test_server_all_projects” : Nghĩa là người có role này có thể build mọi job liên quan với việc deploy server test của mọi project nhé (Cấp quyền Read, View, Build, Cancel, View Status cho role này nhé)

Pattern : mình đặt là “.deploy_test_server.”, nghĩa là role có ảnh hưởng tới bất cứ job nào tên có chứa “deploy_test_server”

Tham khảo hình dưới đây (bạn để ý cái mình vừa tạo là cái role thứ 2 – ở giữa đó nhé) Ok. Ta đã tạo role rồi.

Giờ thì hãy assign role cho user ta vừa tạo nhé Bạn có thể nhìn ảnh dưới đây sẽ hiểu ngay mình làm gì nhé

Vậy là mình đã assign cho user1111 là deployer_test_server_all_projects.

Vậy thì nếu công ty của bạn có 100 project, mỗi project đều có job deploy code lên server test và đặt tên theo quy tắc “Tên có chứa chuỗi ‘deploy_test_server’ ” thì user1111 có thể build (cụ thể hơn là deploy) mọi job đó.

III. Tạo và cấu hình Job.

Tạo, cấu hình và chạy job cơ bản. Ok. Để tạo job (tất nhiên account của bạn phải được setting quyền Create Job), bạn truy cập vào http://localhost:8080/jenkins/view/all/newJob.

Giao diện như sau

Bạn nhập tên job, và chọn type nhé.

Ở đây mình chọn FreeStyle Project thôi, sau này ở những bài nâng cao, mình sẽ giới thiệu thêm về các type khác mà bạn đang nhìn thấy ở hình trên Xác nhận “OK” và bạn được chuyển tới trang tiếp theo, đó là trang config của job.

Ở trang này, bạn có thể cấu hình lại tên Job, description cho job, chỉ định nơi chứa mã nguồn, các lệnh thực thi khi job chạy … rất nhiều thứ khác.

Mình sẽ ví dụ một nho xíu cho bạn hình dung nhé. Mình cần tạo 1 cái job, nhiệm vụ của Job này là tạo file log có dạng log_YYYY_MM_DD.log (ví dụ log_2017_05_30.log) và ghi thông tin về người tạo và thời gian tạo.

Như vậy, mình sẽ tạo 1 file shellscript để thực hiện việc này trên máy tính của mình trước đã. Và mình có file create_log.sh như sau

FILE_NAME="/Users/nhs3108/Desktop/log_"`date +%Y_%m_%d`".log"
DATE_NOW=`date +%Y/%m/%d-%H:%M:%S`
echo "Creating txt file"echo "Created by Nguyen Van A.

Created time is $DATE_NOW” >  $FILE_NAMEecho “Completed”

Giờ, ta cần config để mỗi khi chạy job này, nó sẽ chạy file script create_log.sh. Mình sẽ làm như sau
Truy cập vào phần config http://localhost:8080/jenkins/job/deploy_test_server_project_name_1/configure

Tại phần Build, mình sẽ thêm 1 build step là Execute Shell như dưới

Với /Users/nhs3108/scripts/create_log.sh là command chạy file create_log.sh trên máy đặt jenkins (hay cụ thể ở đây là máy mình). Save lại

Giờ bạn có thể vào job và thực hiện build để cảm nhận kết quả nhé.

Kiểm tra trên máy xem đã có file chưa nhé