it-swarm.com.de

Wie kann ich Jenkins dazu bringen, Push auf ein BitBucket-Git-Repository aufzubauen?

Ich habe ein auf BitBucket gehostetes Git-Repository und habe die SSH-Authentifizierung zwischen dem Repository und meinem Jenkins-Server eingerichtet. Ich kann manuell auf Jenkins aufbauen, aber ich kann den Jenkins-Dienst auf BitBucket nicht dazu bringen, Builds auszulösen.

Jenkins configuration:  
- Project Name: [my_jenkins_job]  
- Build Triggers:  
--Trigger Builds Remotely:  
---Token: [token]

BitBucket configuration:  
- Endpoint: http://[my_jenkins_address]/job/[my_jenkins_job]/build (I've also tried build?token=[token])  
- Project Name: [my_jenkins_job]  
- Module Name: [blank]  
- Token: [token]

Durch das Aufrufen von http: // {my_jenkins_address}/job/{my_jenkins_job}/build? Token = {token}wird ein Build ordnungsgemäß gestartet.

Warum veranlasst Jenkins nicht, durch eine Änderung von BitBucket einen Build zu starten?

54
Allen T.

Ich habe unsere Jenkins-Instanz eingerichtet, um das Repository jede Minute abzufragen. Ist das nicht häufig genug für Ihre Bedürfnisse?

Unsere Jenkins-Konfiguration:

Build-Trigger> Umfrage-SCM = aktiviert

Build-Trigger> Umfrage-SCM> Zeitplan =

# every 1 minute
*/1 * * * *
30

Da der Jenkins Hook von Bitbucket überhaupt nicht funktioniert und ich verschiedene Jenkins-Projekte für verschiedene Branchen habe, kam ich zu dieser Lösung:

  • Installiere das Bitbucket Plugin auf deinem Jenkins
  • Fügen Sie Ihrem Bitbucket-Repository einen normalen Beitrag als Hook hinzu (Einstellungen -> Hooks), und verwenden Sie die folgende URL: 

https: // YOUR.JENKINS.SERVER: PORT/bitbucket-hook /

und wenn Sie die Authentifizierung für Jenkins eingerichtet haben, muss die URL wie sein

https: // BENUTZERNAME: [email protected]: PORT/bitbucket-hook /

  • Konfigurieren Sie Ihr Jenkins-Projekt wie folgt:
  • unter build Trigger aktivieren Build, wenn eine Änderung an BitBucket übertragen wird
  • unter Source Code Management wählen Sie GIT; Geben Sie Ihre Anmeldeinformationen ein und definieren Sie Verzweigungen zum Erstellen von (wie ** feature/*).

Auf diese Weise habe ich drei Build-Projekte, eines für alle Features, eines für die Entwicklung und eines für den Release-Zweig. Vergewissern Sie sich, dass der Schrägstrich ('/') am Ende der URL enthalten ist. Andernfalls funktioniert der Hook nicht.

Und das Beste daran, Sie müssen für neue Jenkins-Projekte keine neuen Haken hinzufügen.

64
salcosand

Mit dem Bitbucket-Dienst können Sie dies tatsächlich in Jenkins zum Laufen bringen, aber es hat ein bisschen rumgespielt, damit es funktioniert.

Wenn Sie die Authentifizierung verwenden, können Sie ein API-Token von einem der Benutzer abrufen, der Builds erstellen kann. Ich habe einen separaten Account nur für Bitbucket erstellt. Sie benötigen mindestens Jenkins 1.426, um das API-Token verwenden zu können. Sie können dann die HTTP-Authentifizierung mit dem API-Token als Kennwort für den Bitbucket-Dienst verwenden.

So ist meine eingerichtet:

Endpunkt: http: // [bitbucket]: [APITOKEN] @ [www.example.com/jenkins/]

Projektname: [NameOfMyJenkinsProject]

Modulname: [leer]

Token: [Token in Jenkins-Projekteinstellungen gefunden]

Nachdem ich es so eingerichtet hatte, konnte ich das Token sowie die Authentifizierung verwenden, um Push-getriggerte Builds von Bitbucket zu aktivieren.

12
Ian Hunter

Das Token-Zeug ist unbrauchbar, wenn Sie die Authentifizierung in Jenkins verwenden.

verwenden Sie das Git-Plugin und verwenden Sie einen POST - Hook mit http[s]://your.site.com[/jenkins]/git/[email protected]:your-username/your-repo.git. Stellen Sie sicher, dass die Abfrage aktiviert ist und planen Sie einen bestimmten Wert, sonst funktioniert dies nicht.

11
floatingLomas

Die Verwendung von Poll SCM ist gut, hat jedoch auch einige Nachteile, es werden Metadaten von Ihrem GIT-Repository abgerufen, das ohnehin einen gewissen Prozentsatz der Bandbreite von Ihrem Bitbucket-Server und Jenkins-Server verwendet. 

Es ist besser, dass Bitbucket weiß, wann Jenkins ausgelöst wird, wenn ein neues Update eintrifft. Wenn Sie die neuesten Bitbucket-Versionen verwenden, gibt es den Plugin-Namen "Stash Webhooks for Jenkins", der jetzt mit Bitbucket kompatibel ist.

In diesem Plugin müssen Sie lediglich die Jenkins-URL und den Jobnamen angeben. Dies bietet auch eine zusätzliche Sicherheitsebene zwischen Jenkins und Bitbucket .  enter image description here

Dies ist das Plugin (Stash-Webhooks für Jenkins, das nicht Bitbucket-Webhooks für Jenkins genannt wird), das vom Atlassian Marketplace heruntergeladen werden kann.

 enter image description here Oben sind die Add-On-Einstellungen angegeben, in denen Sie die Jenkins-URL und die Repo-Clone-URL angeben müssen. Mit dem Auslöser können Sie auch die Verbindung überprüfen usw.

Link für das Plugin: Bitbucket Webhooks für Jenkins

Wie dieses Plugin funktioniert:

  1. Installieren Sie das Git Plugin in Jenkins. Konfigurieren Sie Ihr Projekt für die Verwendung von Git für Ihre Quellcodeverwaltung. Sie müssen die Repository-URL, die Sie für die Konfiguration in Stash verwenden, beibehalten. Aktivieren Sie die Poll SCM-Option in den Build-Triggern. Dies ist erforderlich, um einen Build remote auszulösen. Da wir keine Abfrage wirklich durchführen müssen, können Sie die Häufigkeit der Abfrage so einstellen, dass die Abfrage sehr selten erfolgt. Speichern Sie Ihre Projektkonfiguration.
  2. Geben Sie die URL für Ihre Jenkins-Instanz und die Repository-URL ein, für die Sie Jenkins konfiguriert haben. Sie können die Dropdown-Liste verwenden, um die Klon-URL für jedes unterstützte Protokoll abzurufen. Anschließend können Sie es jederzeit an Ihre Jenkins-Instanz anpassen. 
  3. Das ist es!

Wenn Jenkins und Stash jetzt konfiguriert sind und der Code festgeschrieben wird, wird automatisch ein Auslöser abuild ausgelöst. Was passiert ist, der Post-Receive-Hook löst eine GET-Anfrage an Jenkins aus, die darauf hinweist, das Repository abzufragen (warum müssen Abfragen aktiviert sein). Die Abfrage prüft, ob es dort ist sind eigentlich keine Änderungen. Da Gibt es den Build! 

6
Abhijeet Kamble

Installieren Sie einfach das Bitbucket-Plugin und folgen Sie den Anweisungen, die auf der Pluginseite zu finden sind: 

Konfigurieren Sie Ihr BitBucket-Repository mit einem POST -Hook mithilfe der URL JENKINS_URL/bitbucket-hook (Anmeldeinformationen sind nicht erforderlich). Bei jedem Commit wird Alle Jobs mit der Option "Erstellen, wenn eine Änderung an BitBucket gesendet wird" aktiviert wird ausgelöst.

Siehe hier: https://wiki.jenkins-ci.org/display/JENKINS/BitBucket+Plugin

4
jintux

Ich hatte lange mit diesem Problem zu kämpfen und konnte in der Jenkins-Dokumentation keine Lösung finden. Ich fand hier eine Lösung in der Cloudbees-Support-Site.

Sie müssen nur diese Webhooks zu Ihrem Bitbucket-Repo hinzufügen, und es funktioniert sehr gut:

https://JENKIN_URL/bitbucket-scmsource-hook/notify
https://JENKIN_URL/bitbucket-hook

Und ich arbeite für alle Pipelines, auch für MultiBranch.

Hoffe das hilft jemandem;) 

ADA

0
abdelhadi danba