web-dev-qa-db-fra.com

Jenkins Remote Trigger ne fonctionne pas

Je reçois l'erreur suivante lorsque j'essaie de déclencher une construction à l'aide de la commande suivante:

curl http: // serveur_jenkins: port/jenkins/job/nom_travail/build? token = nom_conable

Sortie:

Identification requise

<-- Vous êtes authentifié comme: anonyme
Groupes dans lesquels vous vous trouvez:

Permission dont vous avez besoin (mais pas): hudson.model.Hudson.Lire
... qui est impliqué par: hudson.security.Permission.GenericRead
... qui est impliqué par: hudson.model.Hudson.Administer
->

J'ai des droits d'administrateur et j'ai également activé le «jeton d'authentification». J'ai aussi les droits Construire, Découvrir et Lire sur Job. J'utilise Jenkins 1.614.

J'ai vérifié plusieurs articles en ligne mais je n'ai rien trouvé qui me convienne.

Essayé quelques options telles que
1) curl -X POST http: // serveur_jenkins: port/jenkins/job/nom_travail/build? Token = nom_corps
2) curl -u user: API (Imprime une longue page HTML)

Aucune suggestion.

20
Technext

J'installe Build Token Root Plugin pour résoudre ce problème avant

https://wiki.jenkins-ci.org/display/JENKINS/Build+Token+Root+Plugin

Ensuite, configurez le jeton d'authentification.

Enfin, utilisez curl pour déclencher la construction à distance (faites attention au caractère d'échappement "\")

curl http://JENKINS_URL/buildByToken/build?job=JOB_NAME\&token=TOKEN_NAME

ou collez l'URL dans votre navigateur (aucun caractère d'échappement requis "\")

http://JENKINS_URL/buildByToken/build?job=JOB_NAME&token=TOKEN_NAME

Si vous voyez Succeed, cela signifie que le déclenchement de Jenkins à distance a réussi.

Notez que vous ne devez pas configurer les droits de génération, de découverte et de lecture sur les tâches.

Pour plus d'informations, vous pouvez vous référer à https://cloudbees.zendesk.com/hc/en-us/articles/204338790-Why-are-builds-not-being-triggered-with-Build-Token -Root-Plugin-

20
hsiaoairplane

Je pense qu'il n'est pas nécessaire de configurer un plugin quelconque pour le faire fonctionner, il suffit de faire ceci BATCH CMD:

curl -X POST http://USER_ID_JENKINS_RECEIVER:TOKEN_OF_USER_ID_JENKINS_RECEIVER@URL_JENKINS_RECEIVER:PORT/job/NAME_OF_JOB/buildWithParameters?token=TOKEN_JOB_JENKINS_RECEIVER
  • Pour vous voir USER_ID_TOKEN , allez à votre nom d'utilisateur en haut à droite de jenkins> allez à Configurer> Cliquez sur le jeton de l'API et il sera affiché.

  • Vous devez configurer un jeton sur le JOB_OF_JENKINS_RECEIVER

Je dois dire que cela fonctionne parfaitement sur Jenkins sans aucune autorisation aux utilisateurs anonymes.

12
M. Mariscal

J'ai eu le même problème après la mise en place d'un serveur de test Jenkins. La solution consistait à s'authentifier à l'aide de mon mot de passe administrateur Jenkins:

curl -u admin:<mypassword> http://localhost:8080/job/Test/build?token=<mytoken>

Utilisez les mêmes nom d'utilisateur et mot de passe que vous avez utilisés pour vous connecter à Jenkins. Il n'y avait pas besoin d'installer des plugins supplémentaires.

6
sashoalm

Je vous suggère d'essayer API Jenkins Python . Il fournit une action build_job qui est très facile à déclencher un travail.

build_job(name, parameters=None, token=None)
   Trigger build job.

   Parameters:  
   name – name of job
   parameters – parameters for job, or None, dict
   token – Jenkins API token
3
mainframer

Dans mon cas, l'URL et le jeton étaient corrects, mais j'avais oublié l'une des autorisations requises pour l'utilisateur de l'API qui déclenche l'URL/la génération.

Les autorisations doivent inclure au minimum la liste ici:

  • Globalement - Lire
  • Job - Build
  • Job - Lire
  • Job - Espace de travail
2
Micah

J'ai également fait face au même problème et je l'ai résolu.

Considérez que vous avez 2 Jenkins A et B. Si vous voulez exécuter un travail de construction présent dans Jenkins B, vous devez donner le jeton API de Jenkins B. Si vous fournissez le jeton API de Jenkins A, il indiquera l'authentification. émission uniquement.

C'est l'erreur que j'ai commise et elle a été résolue une fois que j'ai modifié le jeton de l'API correctement en fonction du Jenkins requis.

0
Dinesh

Installer le plugin de construction paramétrée

https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Build

Si vous utilisez un jeton d'autorisation pour déclencher les générations (Job -> Configurer -> 'Déclencheurs de construction' -> 'Le déclencheur construit à distance (par exemple, à partir de scripts)'), vous pouvez accéder à:

curl -X POST http://server/job/myjob/buildWithParameters?token=TOKEN&PARAMETER=Value

0
Tuan