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

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

754bd8af 29b6 4970 9e37 ee20b86491f9

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.

797eb4e9 8160 497f 8d6a 99067c95a768

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

44fbb7a3 6945 46f5 89c2 27c05c5c2d8e

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

3a12b4cc 6753 410e b5f7 887e5b2d75ff

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”

6a49173f 71d0 495e a556 0ab49716257f

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

f44b5ab9 8081 40e2 920f 8432af63690d

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 .

cfb2b0e6 c57f 4c50 a6e7 166557dc73e5

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”

4a4daa76 0f12 4083 8bcb 15004f228f2d

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é

340eb044 7060 4b1b b7a9 3df452a76638

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

794eef6b 538b 4ffc bcfe 83ad3f290505

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

5d2a2fdd a7c9 4d22 8b66 d45a320ce145

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

e4ebbf41 1b86 488f 84f8 687f99e192ad

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

0b9d5d10 76d1 4998 9787 77a30588e555

Leave a Reply