webentwicklung-frage-antwort-db.com.de

So lösen Sie eine Jenkins-Pipeline aus einem Bitbucket-Repository aus

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.

24
dangonfast

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:  enter image description here

Siehe das offizielle doc von CloudBees

15
JPLemelin

Ich hatte mit dem gleichen Problem zu kämpfen. Nachfolgend sind die wichtigsten Punkte, denen ich gefolgt bin.

In Jenkins Pipeline-Job,

  1. Aktivieren Sie unter Build-Trigger die Option "Remote-Trigger-Builds (z. B. aus Skripts)" und geben Sie das "Authentifizierungstoken" mit einem zufälligen und eindeutigen Token ein.

Im BitBucket-Repository

  1. Gehen Sie zu Einstellungen> Dienste

  2. 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. :)

8
Litty Philip

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

3
Chris Hill

Verbringen Sie Stunden, um herauszufinden, wie Sie dies 2017.10 tun können

  1. Wie in @JPLemelin beschrieben, neu ein Jenkins-Element mit einem Bitbucket-Team Projekt
  2. beziehen Sie sich auf das Dokument:/- https://support.cloudbees.com/hc/en-us/articles/115000051132-Wie-nach-Trigger-Multibranch-Jobs-von-BitBucket-Cloud- , installieren Sie das Plugin: Das BitBucket Branch Source Plugin.
  3. gehen Sie zu Bitbucket und fügen Sie Webhook hinzu: $ {Ihre-Jenkins-URL}/Bitbucket-Scmsource-Hook/notify

nach diesen 3 Schritten lasse ich die Pipeline-Jobs nach einem neuen Commit in bitbucket ausführen 

1
DiveInto

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.

0

Eine einfache Lösung ist die Verwendung von Generic Webhook Trigger Plugin in Jenkins.

Sie müssten es tun

  • Aktivieren Sie es in einem freien Stil- oder Pipeline-Job.
  • Konfigurieren Sie eine Tokenzeichenfolge
  • Konstruiere JSONPath: s, um alles, was du brauchst, aus dem Bitbucket Webhook zu holen.
  • Fügen Sie den Endpunkt des Plugins in Bitbucket hinzu. 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.

0
Tomas Bjerre

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.

0
Prikkeldraad