web-dev-qa-db-fra.com

Comment connecter correctement Bitbucket à Jenkins

Depuis environ une semaine, Bitbucket n'envoie pas (?) De requête à mon serveur Jenkins.

J'ai tout arrangé comme ça:

Endpointhttp://username:apitoken@jenkinshost/
username = nom d'utilisateur dans Jenkins
apitoken = apitoken connecté au nom d'utilisateur dans Jenkins
jenkinshost = mon hôte sur lequel je lance Jenkins

Project name est un projet
Token: Le jeton que je peux configurer dans la configuration par projet.

Je l'ai fait selon ce site: http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins .
Cela a fonctionné, mais ce n'est plus le cas. Bitbucket a-t-il changé quelque chose? Comment puis-je réparer cela?

enter image description here

46
Highmastdon

Afin de construire votre repo après de nouvelles commits, utilisez Plugin BitBucket .

Il n’ya qu’une chose à noter: lors de la création d’un crochet POST (notez que c’est POST hook, pas Jenkins) hook), l’URL fonctionne quand il a un "/" à la fin. Comme:

URL: JENKINS_URL/bitbucket-hook/
e.g. someAddress:8080/bitbucket-hook/

N'oubliez pas de cocher "Construire lorsqu'une modification est transmise à BitBucket" dans la configuration de votre travail.

31
mohi

J'ai eu un problème similaire, jusqu'à ce que je le fasse fonctionner. Vous trouverez ci-dessous la liste complète de l'intégration:

  1. Générer une paire de clés publique/privée: ssh-keygen -t rsa
  2. Copiez la clé publique (~/.ssh/id_rsa.pub) et collez-la dans les clés SSH de Bitbucket dans la console de gestion du compte de l'utilisateur: enter image description here

  3. Copiez la clé privée (~/.ssh/id_rsa) vers un nouvel utilisateur (ou même avec un utilisateur existant) avec les informations d'identification de la clé privée. Dans ce cas, nom d'utilisateur ne fera aucune différence. Par conséquent, le nom d'utilisateur peut être n'importe quoi: enter image description here

  4. exécutez cette commande pour vérifier si vous pouvez accéder au compte Bitbucket: ssh -T [email protected]

  5. FACULTATIF: Maintenant, vous pouvez utiliser votre git to pour copier repo sur votre bureau sans passwjord git clone [email protected]:username/repo_name.git
  6. Maintenant vous pouvez activer les hooks Bitbucket pour les notifications Push Jenkins et les constructions automatiques, vous allez le faire en 2 étapes:

    1. Ajoutez un jeton d'authentification à l'intérieur du travail/projet que vous configurez. Cela peut être n'importe quoi: enter image description here

    2. Dans les crochets Bitbucket: choisissez les crochets Jenkins et remplissez les champs comme ci-dessous: enter image description here

Où:

**End point**: username:usertoken@jenkins_domain_or_ip
**Project name**: is the name of job you created on Jenkins
**Token**: Is the authorization token you added in the above steps in your Jenkins' job/project 

Recommendation: I usually add the usertoken as the authorization Token (in both Jenkins Auth Token job configuration and Bitbucket hooks), making them one variable to ease things on myself.
18
securecurve

Je venais juste de réussir à déclencher des constructions sur commit en utilisant l'option Hooks de BitBucket sur une instance Jenkins en procédant comme suit (similaire à link):

  1. Générer un UUID personnalisé ou une séquence de chaîne, à sauvegarder ultérieurement
  2. Jenkins -> Configurer le projet -> Construire des déclencheurs -> "Le déclencheur construit à distance (à partir de scripts, par exemple)"
  3. (Coller UUID/chaîne ici) pour "Jeton d'authentification"
  4. Sauver
  5. Modifier les paramètres du référentiel bitbucket
  6. Hooks -> Edit: Endpoint: http://jenkins.something.co:9009/ Nom du module: Nom du projet: Jeton du nom du projet: (Collez UUID/string Here)

Le point de terminaison ne nécessitait pas l'insertion de l'autorisation HTTP de base dans l'URL malgré l'utilisation de l'authentification, je n'utilisais pas le champ Nom du module et le nom du projet était sensible à la casse, y compris un espace dans mon cas de test. La construction ne s'est pas toujours déclenchée immédiatement, mais relativement rapidement. Vous pouvez également envisager de désactiver l'option "Empêcher les exploits de requête multisite" dans "Configurer la sécurité globale" à des fins de test, car j'ai rencontré toutes sortes de difficultés d'API avec les intégrations existantes lorsque cette option était activée.

14
SandWyrm

En itérant, j'ai appris que le champ Jeton et le jeton d'un noeud final peuvent être identiques. Je les ai donc configurés pour qu'ils soient identiques à ceux du jeton d'utilisateur et cela fonctionne! Vérifiez également que l'utilisateur dispose des privilèges pour effectuer un travail.

Quoi qu'il en soit, vous pouvez vérifier access.log et voir si BitBucket fait un essai ou non.

jenkins

P.S. Également un lien vers Documentation Bitbucket . Peut un jour il deviendra plus utile.

4
Alexey B.

Je ne connais pas bien ce plugin, mais nous utilisons avec succès BitBucket et Jenkins ensemble. Cependant, nous recherchons des modifications au lieu de les pousser à partir de BitBucket (car notre serveur de génération est caché derrière un pare-feu de société). Cette approche peut fonctionner pour vous si vous rencontrez toujours des problèmes avec l'approche actuelle.

Ce document sur Configuration de SSH pour Git & Mercurial sous Linux explique en détail ce que vous devez faire pour pouvoir communiquer entre votre serveur de construction et BitBucket via SSH. Une fois cela fait, avec le Git Plugin installé, accédez à votre configuration de construction et sélectionnez "Git" sous Gestion du code source, puis entrez l'URL ssh de votre référentiel en tant qu'URL du référentiel. Enfin, dans la section Build Triggers, sélectionnez Poll SCM et définissez la fréquence d'interrogation selon vos besoins.

1
robjohncox

J'ai eu ce problème et il s'est avéré que j'avais nommé mon référentiel avec CamelCase. bitbucket change automatiquement l'URL de votre référentiel pour qu'il soit en minuscule et qu'il soit envoyé à Jenkins dans le Webhook. Jenkins recherche ensuite les projets avec un référentiel correspondant. Si, comme moi, vous avez CamelCase dans l'URL de votre référentiel dans la configuration de votre projet, vous pourrez extraire le code, mais la correspondance des modèles sur la demande webhook échouera.

Il suffit de changer l’URL de votre référentiel pour qu’il soit tout en minuscule au lieu de CamelCase et la correspondance de modèle devrait trouver votre projet.

1
EliRibble