2016-09-14 20 views

Trả lời

13

Hiện tại (Jenkins 2.22) tùy chọn kích hoạt trình kích hoạt "Kích hoạt xây dựng từ xa" có thể hiển thị trong cấu hình công việc đường ống, nhưng không hoạt động (nếu bạn kiểm tra và chỉ định mã thông báo, nó sẽ được đặt lại sau khi lưu) . Theo this, nó là cố ý mà kích hoạt không thể được thiết lập, nhưng một lỗi mà nó xuất hiện như là một lựa chọn ở tất cả.

Trong cùng một chuỗi, chúng giải thích cách kích hoạt bản dựng cho từng dự án (nhánh) riêng lẻ trong một dự án đường ống nhiều nhánh. Những gì tôi cần là thiết lập động sẽ hoạt động cho các nhánh được tạo sau khi thiết lập trình kích hoạt, thay vì điểm cuối được đề xuất từ ​​chuỗi (/job/project-name/job-name/build, cần phải là /job/job-name/project-name/build, vì các dự án được tạo từ các chi nhánh trong công việc), tôi tìm thấy điểm cuối để sử dụng là /job/job-name/build. Để làm việc đó, bạn phải tạo một người dùng có mã thông báo API (đi tới Quản lý Jenkins -> Quản lý người dùng -> biểu tượng Bánh răng -> Hiển thị mã thông báo API) và sử dụng tên người dùng và mật khẩu trong yêu cầu của bạn.

Giải pháp có thể là hiển nhiên đối với những người đã từng làm việc với API REST Jenkins, nhưng khi bạn mới sử dụng cả hai dự án đường ống đa chuẩn và API REST, nó không làm tổn hại đến sự rõ ràng.

+0

Cảm ơn bạn đã thêm điều này, điều này đã giúp tôi rất nhiều sáng nay :-) tôi nhận được 'phản hồi HTTP không hợp lệ 302' mặc dù trong phần github webhook – Richlewis

+1

Đối với thông số xây dựng, điều này làm việc cho tôi. Để viết hoa cái cần được thay thế: http: // SERVER_URL/công việc/MULTIBRANCH_NAME/công việc/BRANCH_NAME/buildWithParameters? Token = USER_TOKEN & PARAM1 = VALUE1 –

0

Tôi vừa mới vượt qua rào cản này và muốn chia sẻ ghi chú của mình.

Trong cấu hình của tôi (Jenkins 2.60.2), không có cách nào để tôi bật Trình kích hoạt tạo từ xa (ví dụ: từ tập lệnh) vì tôi chỉ có thể "Xem cấu hình". Điều này ngăn cản tôi kích hoạt đường ống bằng vấn đề HTTP GET đến điểm kết thúc (/ job/project-name/job/job-name/build).

Tuy nhiên, tôi phát hiện ra rằng tôi luôn có thể kích hoạt bằng vấn đề HTTP POST đến điểm kết thúc.

Bạn sẽ phải cung cấp một mẩu nhỏ hợp lệ trong yêu cầu hoặc vô hiệu hóa tùy chọn "Ngăn chặn yêu cầu truy cập trang web chéo yêu cầu" trong Định cấu hình bảo mật toàn cầu.

Kính trọng,

+1

@MattFriedman Tác giả đề nghị vô hiệu hóa CSRF để không cần thiết. đó không phải là cách chính xác. – puneeth

0

Nếu không vô hiệu hóa yêu cầu trang web giả mạo chữ thập (CSRF), các lệnh bạn có thể tận dụng

crumb=$(curl -s 'http://USERNAME:[email protected]_URL/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') 
curl -X POST -H "$crumb" "http://USERNAME:[email protected]_URL/job/JOB_NAME/build" 

thay thế thư tại thủ đô với giá trị thích hợp.

0

Tôi không thể lấy mã thông báo API như được mô tả trong câu trả lời được chấp nhận vì không có liên kết nào được gọi là "Quản lý người dùng" mặc dù tôi đăng nhập với tư cách quản trị viên. Thay vào đó, tôi nhận được mã thông báo như được mô tả trong Jenkins Wiki:

Mã thông báo API có sẵn trong trang cấu hình cá nhân của bạn.Nhấn tên của bạn ở góc trên bên phải trên mỗi trang, sau đó nhấp vào "Configure" để xem API của bạn thẻ

Một khi bạn có được dấu hiệu, yêu cầu curl sau sẽ kích hoạt một build mới cho một đường ống multibranch (thay thế placeholders bắt đầu với $)

curl -X POST -u "$jenkins_username:$api_token" "http://$jenkins_url/job/$my-pipeline/job/$branch_name/build?token=BUILD_TOKEN" 

Ghi chú:

  1. Nếu tên đường ống hoặc chi nhánh chứa các ký tự đặc biệt, bạn cần mã hóa nó; ví dụ: / trở thành %252F.
  2. Thông số truy vấn token là tùy chọn.
  3. Câu trả lời này đã được xác minh trong Jenkins v2.6.
Các vấn đề liên quan