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?
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 * * * *
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:
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 /
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.
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.
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.
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 .
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.
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:
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!
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
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