web-dev-qa-db-fra.com

Jenkins REST API Créer un travail

Je crée un nouveau travail dans Jenkins à l'aide de l'API REST. J'ai essayé les lignes de commande ci-dessous curl, mais elles génèrent une erreur

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"

Erreur:


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>

39
Roshan007

Jenkins par défaut a Protection CSRF activé, ce qui empêche les attaques en un clic . Pour invoquer la demande, vous devez obtenir le numéro de code de /crumbIssuer/api/xml à l'aide de vos informations d'identification et l'inclure dans votre demande.

Par exemple:

CRUMB=$(curl -s 'http://USER:TOKEN@localhost:8080/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')

Ensuite, vous pouvez créer un travail (en incluant la miette dans votre en-tête):

curl -X POST -H "$CRUMB" "http://USER:TOKEN@localhost:8080/createItem?name=NewJob"

Si cela ne fonctionne pas, vérifiez votre numéro de code (echo $CRUMB) ou exécutez curl avec -u USER:TOKEN.

Pour une explication plus détaillée, voir: Exécution de travaux Jenkins via la ligne de commande.

75
kenorb

Si vous utilisez Postman pour déclencher les demandes, utilisez l'exemple @kenorb ci-dessus, obtenez le fichier crumb  enter image description here

Pour créer un dossier au niveau racine à l'aide du noeud final createItem enter image description here

Pour créer un sous-dossier dans le dossier créé ci-dessus à l'aide du noeud final createItem enter image description here

0
surya vallabhaneni