2016-04-11 17 views
6

Tôi đang làm việc với một máy chủ xây dựng Jenkins để chạy tổng hợp/mô phỏng cho FPGA. Ngay bây giờ tôi đã xây dựng hàng đêm và có thể bắt đầu xây dựng theo cách thủ công trong giao diện trình duyệt Jenkins.Bắt đầu xây dựng Jenkins bằng cách sử dụng tập lệnh batch

Câu hỏi của tôi là:

Có khả năng để bắt đầu một công việc xây dựng với một kịch bản hàng loạt mà không sử dụng giao diện trình duyệt?

(Tôi đang chạy Jenkins trên Windows 7 64bit.)

Trả lời

11

Dưới đây là một ví dụ với một lệnh curl (đối với một công việc với các thông số):

curl -X POST -u YOUR_USER:YOUR_USER_PASSWORD http://YOUR_JENKINS_URL/job/YOUR_JOB/buildWithParameters?PARAM1=value1&PARAM2=value 

Và một công việc không có tham số:

curl -X POST -u YOUR_USER:YOUR_USER_PASSWORD http://YOUR_JENKINS_URL/job/YOUR_JOB/build 

Nếu bạn không muốn sử dụng người dùng/mật khẩu, bạn có thể tạo ra một mã thông báo API cho người dùng Jenkins của bạn:

enter image description here

Và sử dụng thẻ này trong lệnh curl của bạn:

curl -X POST http://YOUR_JENKINS_URL/job/YOUR_JOB/build?TOKEN=YOUR_API_TOKEN 
+0

Cảm ơn rất nhiều, nó hoạt động rất tốt! :) –

+0

Như được đề xuất bởi @ tony19 bên dưới, bạn cũng có thể tạo mã thông báo API cho người dùng của mình (nếu bạn không muốn sử dụng người dùng/mật khẩu). Tôi đã cập nhật câu trả lời của mình. Rất vui khi biết nó đã giải quyết được vấn đề của bạn :) –

+0

Có thể vượt qua SVN Url với các tham số không? Nó sẽ được tốt đẹp để nói với Jenkins thông qua dòng lệnh để chạy một công việc cụ thể (trong trường hợp tổng hợp của tôi cho FPGAs) và kiểm tra tất cả các dự án từ SVN. Kịch bản Python của tôi trong Jenkins có thể chạy mọi thanh toán trong thư mục không gian làm việc để tổng hợp FPGA, nhưng tôi muốn giữ nó đơn giản cho người dùng của tôi để bắt đầu công việc với một đợt duy nhất và kiểm tra cụ thể của họ. –

8

Bạn có thể kích hoạt một công việc Jenkins với một cấu hình thẻ thay vì tên đăng nhập/mật khẩu, mà sẽ cho phép bạn chia sẻ một kịch bản kích hoạt mà không cần phơi bày thông tin đăng nhập của riêng bạn.

  1. Chuyển đến cấu hình công việc của bạn.
  2. Cuộn xuống Trình kích hoạt xây dựng và chọn hộp cho Trình kích hoạt từ xa (ví dụ: từ tập lệnh) và nhập mã xác thực (ví dụ: "MY_TOKEN").

enter image description here

  1. Sao chép một trong những URL dưới Xác thực Mã lĩnh vực dựa trên việc xây dựng của bạn có thông số.

Sau đó, sử dụng URL đó trong lệnh curl để kích hoạt bản dựng. Ví dụ:

curl -I https://${JENKINS_URL}/job/tmp/job/dummy-test/build?token=MY_TOKEN 

Tham số -I nói curl in đầu của phản ứng, mà bạn có thể sử dụng để xác định tình trạng kết quả. Jenkins trả lời với HTTP 201 nếu thành công:

$ curl -I https://<JENKINS_URL>/job/tmp/job/dummy-test/build\?token\=MY_TOKEN 
HTTP/1.1 201 Created 
Cache-Control: public 
Content-Length: 0 
Date: Mon, 11 Apr 2016 12:47:26 GMT 
Location: https://<JENKINS_URL>/queue/item/1707/ 
Pragma: public 
Server: Apache-Coyote/1.1 
X-Content-Type-Options: nosniff 
Connection: keep-alive 
1

Như tôi đã cố gắng để kích hoạt công việc của tôi qua curl tôi đã kết thúc luôn nhận được lỗi "Không có thẩm quyền".

Sau đó tôi phát hiện ra rằng điều này là do tôi đã vô hiệu hóa hoàn toàn quyền truy cập ẩn danh trên máy chủ.Giải pháp là cài đặt plugin sau đây: https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

Nguồn: https://issues.jenkins-ci.org/browse/JENKINS-17764

1

bạn có thể làm điều này bằng lệnh curl với Lựa chọn -I. tạo một mã thông báo API cho công việc jenkins và sử dụng nó để kích hoạt công việc. bạn có thể sử dụng mật khẩu người dùng jenkins cho việc này.

enter image description here

lệnh sẽ là

curl -I -u auto:<user_api_token> http://<jenkins_Server>/job/test/build?token=wefiytgwiefiweihfqweiodf 

kết quả sẽ là enter image description here

để biết thêm thông tin https://serverfault.com/questions/888176/how-to-trigger-jenkins-job-via-curl-command-remotely/888248#888248

Các vấn đề liên quan