Xây dựng Jenkins kích hoạt cho yêu cầu hợp nhất từ ​​web hook GitLab


10

Tôi muốn Jenkins (1.561) xây dựng các yêu cầu hợp nhất (kéo) được gửi tới GitLab (6.7.5), được kích hoạt bởi một hook web yêu cầu hợp nhất. Tôi có một bản dựng được tham số hóa và các plugin Jenkins "GitLab Merge Request Builder" (1.2.0) và "GitLab Hook" (1.0.0). Thật không may, việc di chuyển sang Jenkins CI không phải là một lựa chọn thực sự.

Trộn Yêu cầu Builder Plugin có thể yêu cầu xây dựng hợp nhất, miễn là các biến gitlabMergeRequestId, gitlabTargetBranchgitlabSourceBranchcó sẵn. Điều này hoạt động tốt khi plugin thăm dò chính kho lưu trữ hoặc tôi kích hoạt bản dựng với tải trọng thủ công (ví dụ curl --data "gitlabMergeRequestId=3&so_on http://server_name/job/$JOB_NAME/buildWithParameters), nhưng tôi không thể thực hiện việc này bằng một cái móc.

Sử dụng plugin GitLab Hook, tôi có thể nhận được dữ liệu cần thiết trong tải trọng JSON, nhưng các giá trị có khóa "sai":

  • gitlabMergeRequestIdid
  • gitlabTargetBranchtarget_branch
  • gitlabSourceBranchsource_branch

Tôi đã thử cấu hình các tham số xây dựng với các yêu cầu của plugin GitLab Merge Request Builder Namevà các giá trị biến như Default Value. Thật không may (và có thể có chủ ý), các biến trong các Default Valuetrường không được thay thế, vì vậy Jenkins đang tìm kiếm một yêu cầu hợp nhất với id ${id}và các giá trị nhánh tương tự.

Tôi đã không tìm thấy cách nào để định cấu hình tải trọng được gửi từ GitLab và không có tùy chọn cấu hình nào cho cả plugin GitLab Hook cũng như các tên tham số được sử dụng bởi plugin GitLab Merge Request Builder.

Tôi đang xem xét viết một tập lệnh PHP nhỏ để chặn và thay đổi tải trọng từ POST trước khi chuyển nó cho Jenkins. Trong khi tôi chắc chắn điều này sẽ hoạt động, nó chắc chắn có vẻ phức tạp không cần thiết.

Tùy chọn thực sự duy nhất khác mà tôi có thể thấy là thay đổi nguồn bổ trợ, nhưng điều này làm cho việc nâng cấp chúng thành PITA.

Tôi đã bỏ qua một cái gì đó rõ ràng, hoặc thực sự không có cách nào đơn giản hơn để kích hoạt các bản dựng Yêu cầu Hợp nhất với một móc nối web từ GitLab đến Jenkins?

Câu trả lời:



0

Kiểm tra plugin mới này (gitlab-plugin), có thể nó giúp. Plugin này mô phỏng Jenkins như một Dịch vụ web GitlabCI sẽ được sử dụng với GitlabHQ.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.