Jenkins:' Trigger Construit à distance ' avec?token ne fonctionne pas lorsque la stratégie D'autorisation matricielle est utilisée
j'ai un problème avec le déclenchement des constructions dans Jenkins avec authentification activée et se demandant si quelqu'un a des idées.
J'ai la sécurité globale configurée pour utiliser LDAP avec "Project-based Matrix Authorization Strategy" activée. L'utilisateur" anonyme "a le privilège" Job > Build", et aucun autre privilège (en particulier, l'utilisateur "anonyme" n'a pas le privilège "Overall > Read", car je ne veux pas que tout le monde soit en mesure de voir la liste des emplois et d'autres de l'information générale).
je veux qu'un script automatisé puisse déclencher une construction en utilisant la fonctionnalité "Trigger Builds Remote", où je spécifie un ?token=[token]
valeur dans L'URL et l'authentification standard devrait être contournée, aussi longtemps que le [token]
la valeur correspond à celle que j'ai définie dans la page de configuration du travail. L'objectif est de besoin de fournir un nom d'utilisateur/mot de passe régulier dans la demande mais simplement fournir le token pour ce travail spécifique.
le la documentation semble indiquer que cela devrait work:
https://wiki.jenkins-ci.org/display/JENKINS/Quick+and+Simple+Security
en particulier, je m'attends à ce que cette requête HTTP fonctionne:
curl -i https://jenkinsHost/job/ProjectName/build?token=test
Mais j'obtiens:
[~]$ curl -i https://jenkinsHost/job/ProjectName/build?token=test
HTTP/1.1 403 Forbidden
Date: Sat, 27 Apr 2013 23:17:03 GMT
Server: Winstone Servlet Engine v0.9.10
Content-Type: text/html;charset=UTF-8
Content-Length: 629
X-Powered-By: Servlet/2.5 (Winstone/0.9.10)
Set-Cookie: JSESSIONID.e9bc4765=e1f0a30b9f04b3740bae527a7822b2d5; Path=/; HttpOnly
Connection: close
<html><head><meta http-equiv='refresh' content='1;url=/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest'/>
<script>
window.location.replace('/login?from=%2Fjob%2FProjectName%2Fbuild%3Ftoken%3Dtest');</script>
</head>
<body style='background-color:white; color:white;'>
Authentication required
</body></html>
Quand Je utiliser l'authentification API, la requête fonctionne:
curl --username "test_user:API_KEY" https://hostname/job/ProjectName/build?token=test
Mais encore une fois, selon la documentation, je pense que c'est censé contourner l'authentification globale si ?jeton est présent et correspond au projet jeton-je configurer. Pourquoi ça ne marche pas? Quelles autres informations/journaux puis-je fournir?
2 réponses
il y a un nouveau plugin qui vous permet de le faire même lorsque Jenkins interdit l'accès anonyme en lecture:
Construire Un Jeton De La Racine Du Plugin
Utilisation:
$ curl 'http://jenkins/buildByToken/build?job=jobname&token=mytoken'
Scheduled.
de même avec buildWithParameters
.
exemple d'utilisation du plugin "Build Authorization Token Root" avec POST:
wget --post-data="job=MyJob&token=SECRET&MyParameter=hello" http://servername/jenkins/buildByToken/buildWithParameters
note que "Déclencheur Construit à Distance" doit être activée pour ce travail (avec jeton d'autorisation "SECRET")