Webhooks cho phép chúng ta trigger các event, như khi push code mới được đấy lên, có thể là comment hay một yêu cầu merge được tạo. Dựa vào những trigger xảy ra trên website chúng ta thực hiện cấu hình để thực hiện một task trên website khác.

Tương tự như vậy với hệ thống webhooks trong tích hợp GitLab và Jenkins, khi có event xảy ra trên GitLab, chúng ta sẽ cấu hình dựa vào event đó để thực hiện build job tự động trên Jenkins.

How to Jenkins works

Trong bài viết trước “Tích hợp Jenkins GitLab“, chúng ta cấu hình cơ bản để tích hợp Jenkins GitLab và thực hiện build thủ công. Bài viết này, chúng ta sẽ cấu hình webhooks để Jenkins sẽ tự động build project khi có code được push lên GitLab

Chúng ta lấy ví dụ thực hiện cấu hình với project wordpress

1. Cấu hình trên Jenkins

Mở Jenkins –> truy cập project wordpress –> Configure và chuyển tới thẻ “Build Triggers

Build Triggers

Jenkins dựa vào trigger mà được chọn trong phần “Build Trigger” để thực hiện lệnh build tự động.

  • Build after other projects are built: thực hiện build khi có một project khác đã built
  • Build periodically: Tùy chọn này cho phép chúng ta thiết lập chu kỳ một khoảng thời gian thì Jenkins sẽ tự động thực hiện build

Ví dụ chúng ta thiết lập giá trị 15 phút build một lần

build periodically

  • Build when a change is pushed to GitLab: Thực hiện build khi có giá trị thay đổi được đẩy lên GitLab

Chúng ta thực hiện tích chọn “Build when a change is pushed to GitLab

Build when a change is pushed to GitLab

Khi đó URL cho kết nối GitLab webhook là: http://192.168.1.221:8080/project/wordpress

Chúng ta tích chọn một số tùy chọn trong phần “Enable GitLab triggers” (Các giá trị của tùy chọn cần kết hợp cấu hình triggers trên GitLab để cho phép job có thể build tự động)

– Push Events: Khi thực hiện đẩy code lên master

– Accepted Merge Request Events: Khi yêu cầu merge được accept

Và một số tùy chọn khác phụ thuộc vào nhu cầu mà ta sẽ sử dụng.

Tiếp đó, mở rộng Advanced –> Sau đó click vào Generate để tạo “Secret Token

Generate Secret Token

Chúng ta copy tokens này “5d6e9e19c5020f5c99121ef410f58f35” sang GitLab để cấu hình xác thực ở bước sau

2. Thực hiện cấu hình trên GitLab

Trên GitLab, mở project “wordpress” –> Settings –> Integrations

Điền thông tin URL mà kết nối đến project “http://192.168.1.221:8080/project/wordpress” và thông tin tokens “5d6e9e19c5020f5c99121ef410f58f35” ở Jenkins mà chúng ta đã tạo ở trên

webhook integrations

Khi có event nào đó xảy ra (có thể là push code, comment, merge request, ..), GitLab thực hiện trigger và sẽ hook đến Jenkins. Jenkins dựa vào thông tin hook đó, nếu nó cấu hình accept giá trị event từ GitLab khi đó job trên Jenkins sẽ tự động thực hiện build.

Tích chọn một số tùy chọn Trigger như:

  • Push events: Khi có code được đấy lên GitLab ( bao gồm cả khi Accepted merge)
  • Merge request events: Khi có yêu cầu merge code

Sau đó nhấn “Add webhook” để tạo kết nối webhook với Jenkins.

webhook1

Tiếp theo chúng ta có thể test xem webhook hoạt động chưa → Nhấp test → Push events

test push events

Nếu kết quả trả về 200 như hình là kết nối thành công

hook executed successfully

3. Push code lên GitLab và Jenkins build job tự động

– Push code lên GitLab

Tôi sẽ thực hiện nhanh quá trình,  bởi commit trực tiếp lên nhánh master

git push orgin master

– Jenkins build job tự động

Sau khi push code lên GitLab hoàn thành, chúng ta sẽ kiểm tra quá trình thực hiện trên Jenkins

Mở Jenkins –> mở job wordpress –> Kiểm tra “Build History

git push orgin master on Jenkins

Chúng ta thấy có trạng thái build success khi code được push lên.

Để xem chi tiết quá trình build, nhấp mở Console Output

console output

Như vậy, chúng ta thực hiện xong phần kết nối webhook giữa GitLab và Jenkins, cũng như cho phép thực hiện build job tự động khi có code được push lên nhánh master trên GitLab.

Content retrieved from: https://vnsys.wordpress.com/2018/10/27/cau-hinh-webhooks-jenkins-va-gitlab/.