2014-05-06 6 views
18

के साथ बनाया गया है, मैंने एसओ पर इसी तरह की पोस्ट देखी हैं, लेकिन बिल्कुल सही नहीं है कि मैं क्या करने की कोशिश कर रहा हूं (या कम से कम चलाने के लिए कमांड का कोई पूर्ण उदाहरण नहीं)।ट्रिगर पैरामीटर का निर्माण कर्ल और क्रंब

मैं कर्ल का उपयोग कर जेनकींस पर एक पैरामीटरयुक्त निर्माण को दूरस्थ रूप से ट्रिगर करने का प्रयास कर रहा हूं। मैंने 'क्रॉस साइट अनुरोध फोर्जरी रोकें' सक्षम किया है इसलिए मुझे एक वैध टुकड़ा पारित करने की भी आवश्यकता है।

स्क्रिप्ट मेरे पास नीचे है:

#!/bin/bash 

json="{\"parameter\": [{ \"P1\": \"param1\", \"P2\": \"param2\", \"P3\": \"param3\" }]}" 
crumb=`curl "http://SERVER/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,%22:%22,//crumb)"` 

curl -v -H $crumb -X POST http://SERVER/job/JOB_NAME/buildWithParameters -d token=runme --data-urlencode json="$json" 

मैं भी यूआरएल मैं करने के लिए कर्ल करने के लिए गुजर रहा हूँ को संशोधित करने की कोशिश की है या तो:

USERNAME:[email protected] 

और

USERNAME:[email protected] 

कर्ल से आउटपुट है:

* About to connect() to SERVER port 8080 (#0) 
* Trying SERVER... connected 
* Connected to SERVER (SERVER) port 8080 (#0) 
* Server auth using Basic with user 'USERNAME' 
> POST /job/JOB_NAME/buildWithParameters HTTP/1.1 
> Authorization: Basic bjAwNjY5MjI6YWxLaW5kaTg= 
> User-Agent: curl/7.19.7 (x86_64-redhat-linux-gnu) libcurl/7.19.7 NSS/3.13.1.0 zlib/1.2.3 libidn/1.18 libssh2/1.2.2 
> Host: SERVER:8080 
> Accept: */* 
> .crumb:776eb589e8b930d9f06cfc2df885314c 
> Content-Length: 168 
> Content-Type: application/x-www-form-urlencoded 
> 
< HTTP/1.1 403 No valid crumb was included in the request 
< Content-Type: text/html;charset=ISO-8859-1 
< Cache-Control: must-revalidate,no-cache,no-store 
< Content-Length: 1469 
< Server: Jetty(8.y.z-SNAPSHOT) 
< 

तो ऐसा लगता है कि मैं ठीक से टुकड़े को पार नहीं कर रहा हूं, लेकिन मुझे यकीन नहीं है कि कमांड का सही प्रारूप क्या होना चाहिए।

+0

[जेनकिंस रीस्ट एपीआई नौकरी बनाएं] का संभावित डुप्लिकेट [https://stackoverflow.com/questions/38137760/jenkins-rest-api-create-job) – kenorb

उत्तर

17

सही स्वरूप है:

curl -H ".crumb:xxxxxxxxxxxxxxxxxxxxxx"

+0

यह आपके प्रश्न में आपके द्वारा चलाए गए कार्यों से अलग कैसे है? मैं एक ही मुद्दे पर चल रहा हूं और यह नहीं समझ सकता कि यह टुकड़ा क्यों खारिज कर रहा है, और ऐसा लगता है कि आप यहां वर्णन करते हैं। – Jesse

+4

ठीक है, मेरी समस्या का पता लगाया गया है: यदि आप उपयोगकर्ता नाम के तहत क्रंब उत्पन्न करते हैं (जो कि जेनकींस सुरक्षा को कॉन्फ़िगर करने के तरीके के आधार पर आवश्यक हो सकता है), तो किसी और अनुरोध में उन प्रमाण-पत्रों और इसके विपरीत भी शामिल होना चाहिए। किसी भी तरह से मुझे यह याद आया। – Jesse

+2

ध्यान दें कि अगर आप अलग-अलग "ब्राउजर" जैसे क्रेट या डायरेक्ट/डीएनएस/आदि के माध्यम से लोकलहोस्ट जैसे एक अलग यूआरएल से क्रंब को पकड़ते हैं तो क्रंब अलग होगा, इसलिए wget के माध्यम से कुछ से टुकड़े पाने की उम्मीद न करें और फिर इसका इस्तेमाल करें कर्ल में – sjakubowski

21

क्या मेरे लिए काम किया:

SERVER=http://localhost:8080 
CRUMB=$(curl --user $USER:$APITOKEN \ 
    $SERVER/crumbIssuer/api/xml?xpath=concat\(//crumbRequestField,%22:%22,//crumb\)) 

curl --user $USER:$APITOKEN -H "$CRUMB" -d "script=$GROOVYSCRIPT" $SERVER/script 
6

यह मेरे लिए काम किया:

टुकड़ा प्राप्त $ wget -q --auth-no-challenge --user yourUserName --password yourPassword--output-document - 'http://myJenkins:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb) '

+०१२३५१६४१०

अब भागो जेनकींस नौकरी $ curl -I -X POST http://yourUserName:[email protected]:8080/job/JOBName/build -H "Jenkins-Crumb:44e7038af70da95a47403c3bed5q10f8"

HTTP/1.1 201 निर्मित दिनांक: शुक्र, 28 जुलाई 2017 09:15:45 GMT एक्स-सामग्री-प्रकार-विकल्प: nosniff स्थान: http://myJenkins:8080/queue/item/17/ सामग्री-लंबाई: 0