J’ai rencontré des problèmes avec bitbucket et leur post-commit.
http://username:[email protected]/job/myproject/build?token=mytoken
J’ai une instance de jenkins, je voudrais déclencher sur push sur certains référentiels. Les jenkins étant accessibles depuis l’extérieur (le World Wide Web), ils sont protégés par le système utilisateur / mot de passe habituel.
Lorsque vous travaillez avec Github, je peux définir le nom d’utilisateur et le mot de passe directement dans l’URL. Lors de la vérification des journaux nginx, il est clair que github est capable de convertir cette URL pour se connecter à l’utilisateur. Bitbucket ne l’est pas.
Voici quelques journaux nginx montrant le problème.
Journaux de publication de Bitbucket:
- - "POST /job/myproject/build?token=mytoken HTTP/1.1" 403 216 "-" "Bitbucket.org"
La partie intéressante est l’erreur 403. Accès refusé.
Mêmes logs pour le post hook de Github :
- github - "POST /job/myproject/build?token=mytoken HTTP/1.1" 302 0 "-" "-"
Comme les journaux le montrent, github est le nom de l’utilisateur que j’ai créé avec les bons droits pour lancer des builds.
Que puis-je faire pour activer le post-crochet?
Si vous voulez que BitBucket déclenche l’exécution d’un travail Jenkins après un commit dans votre repository, vous avez deux options:
Les deux utilisent l’API Jenkins pour déclencher le travail.
Pour le hook POST, vous devez essentiellement créer l’URL comme ceci:
https://USER:APITOKEN@JENKINS_URL/job/JOBNAME/build?token=TOKEN
où:
Ce qui est cool, c’est que vous pouvez vérifier si cela fonctionne simplement en utilisant curl de la console.
Notez également qu’il n’y a pas de mot de passe dans l’URL, vous avez plutôt l’API TOKEN, ceci pour éviter de publier votre utilisateur et votre mot de passe. Quelque chose d’autre que vous pouvez faire pour améliorer un peu la sécurité, si vous avez des droits d’administrateur sur le serveur Jenkins, créez un nouvel utilisateur avec des droits d’access pour lire et créer des travaux, et utilisez-le uniquement pour cela. Vous n’avez donc pas à publier votre propre utilisateur et jeton, qui peuvent avoir des droits d’administrateur.
Le hook Jenkins fonctionne de la même manière, en construisant la même URL pour vous, mais vous n’avez pas la possibilité de le tester (par exemple, en utilisant curl).
Ceci est basé sur ces documents:
J’espère que cela aide.
Ger
Cela ne répond pas vraiment à votre question, mais suggère une autre approche. Bitbucket.org et github.com prennent tous deux en charge les clés ssh.
Voir ” Configurer SSH pour Git ”
Il est important de configurer ssh-agent (expliqué dans cette page), car sans cela, il vous sera demandé d’entrer une phrase de passe à la place du nom d’utilisateur et du mot de passe.