Hướng dẫn tạo Job Jenkins qua API Jenkins

62

Hướng dẫn tạo Job Jenkins qua API JenkinsCuongquach.com | Với bài viết này chúng ta sẽ tìm hiểu làm cách nào để tự động hoá việc khởi tạo một Job mới trên dịch vụ Jenkins thông qua Jenkins API. Nhu cầu này phát sinh khi bạn muốn tạo một số Job tự động build  project rồi thời gian sau tự xoá Job đó đi.

tao-job-jenkins-qua-api-jenkins
tao-job-jenkins-qua-api-jenkins

1. Lấy file config Job Jenkins

Một Job Item Jenkins sẽ lưu tất cả các cấu hình mà bạn đã khởi tạo và quy định, ở file tên là ‘config.xml‘. Bạn có thể truy cập file này qua WebUI hoặc qua local máy chủ Jenkins.

Để lấy được file cấu hình job ‘config.xml‘ mà bạn đã tạo trên UI, từ đó bạn thể dùng để khởi tạo một Job mới, thì bạn có thể query bằng Postman hoặc xài lệnh ‘curl‘ đơn giản với cú pháp sau :

Các thông số cần lưu ý:

  • username : username dùng để đăng nhập Jenkins.
  • API_TOKEN : token API của user Jenkins bạn sử dụng để đăng nhập Jenkins.
  • <job-name> : tên Job của bạn.

Phần API_TOKEN bạn có thể khởi tạo thông tin ở phần sau :

  • Bấm vào tên user ở góc trên phải giao diện quản lý Jenkins.
  • Vào phần : “Configure” > “API Token” > “Add new token
  • Khởi tạo ra chuỗi Token API mà user đó có thể sử dụng để tương tác API Jenkins.
lấy token_api user jenkins
lấy token_api user jenkins

Khi đã có đầy đủ thông tin thì bạn có thể query lấy thông tin cấu hình một Job Jenkins trong file ‘config.xml‘.

Sau đó chúng ta chỉnh sửa lại file ‘webapp-main.xml‘ theo nhu cầu mới của chúng ta.

2. Tạo Job Jenkins qua Jenkins API

Chúng ta sử dụng file ‘new-webapp-main.xml‘ mới chỉnh sửa theo thông tin mong muốn, khởi tạo Job Jenkins mới qua API Jenkins. Đầu tiên bạn cần lấy giá trị ‘crumb‘ của Jenkins, giá trị thông tin này được Jenkins sử dụng để phòng chống lỗi bảo mật CSRF.

Cuối cùng chúng ta khởi tạo một request POST với dữ liệu từ file ‘new-webapp-main.xml‘, mình đặt tên Job mới là ‘NewJobName-CuongQuach

Sau khi chạy lệnh trên thì ta sẽ thấy được Job đó trên Jenkins UI.

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

LEAVE A REPLY