2016-07-01 11 views
28

Tworzę nową pracę w Jenkins przy użyciu REST API. Próbowałem poniżej curl linii cmd ale rzucają errorJenkins REST API Utwórz zadanie

curl -i -X POST --user "admin:<API token>" --data-binary "@C:\mylocalconfig.xml" -H "Content-Type: text/xml" http://localhost:8080/createItem?name=NewJob 

curl -X POST -u <username>:<pass> -H "Content-Type:application/xml" -d "@C:\mylocalconfig.xml" "http://localhost:8080/createItem?name=AA_TEST_JOB3" 

Error:


HTTP/1.1 403 No valid crumb was included in the request 
Date: Fri, 01 Jul 2016 05:25:59 GMT 
X-Content-Type-Options: nosniff 
Content-Type: text/html; charset=ISO-8859-1 
Cache-Control: must-revalidate,no-cache,no-store 
Content-Length: 360 
Server: Jetty(9.2.z-SNAPSHOT) 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> 
<title>Error 403 No valid crumb was included in the request</title> 
</head> 
<body><h2>HTTP ERROR 403</h2> 
<p>Problem accessing /createItem. Reason: 
<pre> No valid crumb was included in the request</pre></p><hr><i><small>Power 
ed by Jetty://</small></i><hr/> 
</body> 
</html> 

+0

[Możliwy duplikat] (http://stackoverflow.com/questions/23497819/trigger-parameterized-build-with-curl-and-crumb) – rdupz

Odpowiedz

50

Jenkins domyślnie ma CSRF Protection włączony co zapobiega one-click attacks. Aby wywołać żądanie, musisz uzyskać miękiszu z /crumbIssuer/api/xml przy użyciu poświadczeń i dołączyć go do żądania. Na przykład:

CRUMB=$(curl -s 'http://USER:[email protected]:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)') 

następnie można utworzyć pracę (włączając miękisz w nagłówku):

curl -X POST -H "$CRUMB" "http://USER:[email protected]:8080/createItem?name=NewJob" 

Jeśli powyższe nie zadziała, należy sprawdzić miękisz (echo $CRUMB) lub uruchomić curl z -u USER:TOKEN.

Bardziej szczegółowe wyjaśnienie znajduje się w: Running jenkins jobs via command line.

+0

Kiedy to zrobić, mam „Błąd No Content- Zestaw nagłówków typu " – battey

+0

Od 2017 r. Jest to pełny przykład: [Uruchamianie zadań Jenkins za pośrednictwem linii poleceń] (http://www.inanzzz.com/index.php/post/jnrg/running-jenkins-build-via- wiersz poleceń) – BentCoder