web-dev-qa-db-fra.com

Lancer la construction de Jenkins en utilisant un script batch

Je travaille avec un serveur de génération Jenkins pour exécuter la synthèse/simulation pour les FPGA . À l'heure actuelle, j'ai des versions nocturnes et je peux commencer la construction manuellement dans l'interface du navigateur Jenkins.

Ma question est:

Est-il possible de démarrer une construction de travail avec un script batch sans utiliser l'interface du navigateur?

(J'exécute Jenkins sur Windows 7 64 bits.)

8
michi.b

Voici un exemple avec une commande curl (pour un travail avec des paramètres):

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

Et un travail sans paramètres:

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

Si vous ne souhaitez pas utiliser votre utilisateur/mot de passe, vous pouvez générer un jeton d'API pour votre utilisateur Jenkins:

 enter image description here

Et utilisez ce jeton dans votre commande curl:

curl -X POST http://YOUR_JENKINS_URL/job/YOUR_JOB/build?TOKEN=YOUR_API_TOKEN
22
Bruno Lavit

Vous pouvez déclencher un travail Jenkins avec un jeton configuré à la place de votre nom d'utilisateur/mot de passe, ce qui vous permettrait de partager un script de déclenchement sans exposer vos propres informations d'identification.

  1. Accédez à la configuration de votre travail.
  2. Faites défiler jusqu'à Build Triggers, puis cochez la case Trigger build à distance (par exemple, à partir de scripts) et entrez un jeton d'authentification (par exemple, "MY_TOKEN").

 enter image description here

  1. Copiez l'une des URL situées sous le champ Authentication Token en fonction de la présence de paramètres dans votre génération.

Puis utilisez cette URL dans une commande curl pour déclencher une construction. Par exemple:

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

Le paramètre -I indique à curl d’imprimer l’en-tête de la réponse, que vous pouvez utiliser pour déterminer l’état du résultat. Jenkins répond avec HTTP 201 en cas de succès:

$ 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
11
user600838

vous pouvez le faire en utilisant la commande curl avec l'option -I. créez un jeton API pour le travail jenkins et utilisez-le pour déclencher le travail. vous pouvez également utiliser le mot de passe utilisateur jenkins. 

enter image description here

la commande serait 

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

les résultats seraient enter image description here

pour plus d'informations https://serverfault.com/questions/888176/how-to-trigger-jenkins-job-via-curl-command-remotely/888248#888248

2
Prabath Dolawatta

Alors que j'essayais de déclencher mon travail via curl, je finissais toujours par recevoir des erreurs "Non autorisé". 

Plus tard, j'ai découvert que c'était parce que j'avais complètement désactivé l'accès anonyme sur le serveur. La solution consistait à installer le plugin suivant: https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

Source: https://issues.jenkins-ci.org/browse/JENKINS-17764

1
keocra

Dans le nouveau pipeline Jenkins, sous Build Triggers, cochez la case Trigger génère à distance (par exemple, à partir de scripts). Ensuite, donnez à Jenkins un jeton qui sera nécessaire pour déclencher la construction.

Not authorized erreurs

Un problème lié au déclenchement des versions à distance est que, si vous avez configuré un accès utilisateur anonyme anonyme correct et Jenkins, vous obtiendrez des erreurs Not authorized lorsque vous essayez de déclencher la construction à partir d'un script (comme l'a souligné @keocra). Vous avez maintenant deux options:

  1. Transmettez un nom d'utilisateur et un mot de passe lorsque vous déclenchez la construction. Cela signifie que votre script devra inclure le nom d'utilisateur et le mot de passe, ce qui signifie que tous ceux qui peuvent lire votre script auront le nom d'utilisateur et le mot de passe, ce qui est presque aussi mauvais qu'un accès anonyme.
  2. Utilisez le plugin Build Token Root . Ce plugin vous permet d’utiliser la fonctionnalité Trigger builds à distance sans requérir le nom d’utilisateur et le mot de passe. Tout ce dont vous avez besoin est le jeton que vous avez généré auparavant.

Déclencher la construction

Pour déclencher la construction à distance, exécutez

curl JENKINS_URL/buildByToken/build?job=JobFoo&token=MyToken

JENKINS_URL est l'URL de votre instance Jenkins, JobFoo est le nom de votre travail et MyToken est le jeton que vous avez entré sous Trigger bulids à distance.

Bien sûr, vous n'avez pas besoin d'utiliser curl; vous pouvez également utiliser wget ou tout autre programme pouvant émettre des requêtes HTTP.

0
jpyams