Ich habe erfolgreich einen Webhook-Trigger in Bitbucket für ein Jenkins-Freestyle-Projekt zu Testzwecken eingerichtet.
Leider verwendet mein Jenkins-Projekt das Pipeline-Format, und ich kann Bitbucket nicht dazu bringen, ein solches Projekt auszulösen. Das Problem scheint zu sein, dass kein Jenkins-Projekt registriert ist, um aus dem Repo zu ziehen, aus dem der Bitbucket-Webhook stammt, und Jenkins antwortet mit:
Error: Jenkins response: No git jobs using repository: ssh://[email protected]:7999/xxx/testing-jenkins.git and branches: master No Git consumers using SCM API plugin for: ssh://[email protected]:7999/xxx/testing-jenkins.git
Das Pipeline-Projekt wird so eingerichtet, dass die Variable Jenkinsfile
im angegebenen Repository (ssh://[email protected]:7999/xxx/testing-jenkins.git
) gefunden wird, indem die Option "Pipeline-Skript aus SCM" verwendet wird.
Daher gibt es eigentlich eine Art "git-Consumer" für die Pipeline, aber dies scheint von Jenkins nicht berücksichtigt zu werden, wahrscheinlich weil dies keine echte Projektquelle ist, sondern eine Pipelinequelle.
Gibt es Beispiele für die Integration von Bitbucket- und Jenkins-Pipeline-Projekten? Ich konnte keine finden.
Wenn Sie nach einer vollständigen Bitbucket- und Jenkins-Pipeline suchen, empfehle ich dringend die Verwendung des Bitbucket Branch Source Plugin . Das Plugin entdeckt alle Branches und Pull Requests und erstellt alle, die eine JenkinsFile im Repo-Stamm haben.
Sie können auch als Bitbucket-Team ein Projekt erstellen, das alle Repos Ihrer Organisation scannt:
Siehe das offizielle doc von CloudBees
Ich hatte mit dem gleichen Problem zu kämpfen. Nachfolgend sind die wichtigsten Punkte, denen ich gefolgt bin.
In Jenkins Pipeline-Job,
Im BitBucket-Repository
Gehen Sie zu Einstellungen> Dienste
Wählen Sie "Jenkins" aus der Dropdown-Liste und "Dienst hinzufügen".
Aktivieren Sie "Csrf aktiviert".
Endpunkt: http: // Benutzername: [email protected]/
Sie finden Benutzernamen und Apitoken unter Jenkins-Startseite> Personen Wählen Sie den Benutzer aus und klicken Sie auf Konfigurieren. Klicken Sie unter "API-Token" auf die Schaltfläche "API-Token anzeigen", und Sie sehen den Benutzernamen und das Apitoken
Modulname: Dies ist optional. Es kann sich dabei um eine bestimmte Datei oder einen Ordner handeln, der betrachtet werden soll.
Projektname: Der Projektname in Jenkins.
Wenn sich der Job in einer Ordnerstruktur befindet, sagen Sie, ich habe 'MyTestFolder/MyTestPipelineJob'. Der zu erwähnte Projektname lautet 'MyTestFolder/Job/MyTestPipelineJob'.
Token: 'Authentication Token' in Jenkins-Job erstellt.
Du bist bereit zu gehen !!
Ich bezog http://felixleong.com/blog/2012/02/hooking-bitbucket-up-with-jenkins/ und einige meiner Instinkte. :)
Ich habe das gleiche Problem. Meine Problemumgehung bestand darin, ein Freestyle-Projekt zu erstellen, bei dem can vom WebHook ausgelöst wurde und die Pipeline durch den Abschluss des Projekts ausgelöst wurde.
In der Zwischenzeit ist hier der Jenkins-Fehler, den Sie nach einem Fix suchen können: https://issues.jenkins-ci.org/browse/JENKINS-38447
Verbringen Sie Stunden, um herauszufinden, wie Sie dies 2017.10 tun können
nach diesen 3 Schritten lasse ich die Pipeline-Jobs nach einem neuen Commit in bitbucket ausführen
Ich hatte genau das gleiche Problem ...
Die Ursache war */master
für den Zweigspezifizierer. Ich musste es buchstabieren: Origin/master
(keine Wildcards).
Es funktioniert jetzt gut.
Eine einfache Lösung ist die Verwendung von Generic Webhook Trigger Plugin in Jenkins.
Sie müssten es tun
JENKINS_URL/generic-webhook-trigger/invoke?token=whatever_you_picked
Das Plug-in gibt Ihnen ein klares Feedback, wenn es aufgerufen wird, um die Fehlerbehebung zu erleichtern.
Es liegt an Ihnen, die gewünschten Werte aus dem Webhook auszuwählen, um das korrekte Repository zu klonen, oder was immer Sie tun möchten, wenn das Repository aufgerufen wird.
Ich konnte diese Arbeit schließlich mit Jenkinsfile in Multi Branch Pipeline durchführen:
In Bitbucket habe ich einen Webhook mit meiner Jenkins-URL und meiner Klon-URL erstellt. In den Webhook habe ich folgende URL eingefügt (genau die URL im Projekt von Jenkins):
http://<jenkins>/git/notifyCommit?url=http://<user>@<bitbucket>/scm/<project>/<repo>.git
Wenn ich den Trigger teste, lautet das Ergebnis folgendes:
No git jobs using repository: http://<user>@<bitbucket>/scm/<project>/<repo>.git and branches:
Scheduled indexing of <repo>
Es löste also keine Jobs aus, löste jedoch das Scannen mit mehreren Filialen aus, sodass meine geänderten Filialen erstellt wurden.