Bitbucket-Repositories vor Ort erstellen

Azure DevOps Services

Hinweis

Informationen zur Integration von Bitbucket Cloud in Azure Pipelines finden Sie unter Bitbucket Cloud.

Sie können Ihren lokalen Bitbucket-Server oder einen anderen Git-Server in Azure Pipelines integrieren. Ihr lokaler Server kann mit dem Internet verbunden sein oder auch nicht.

Wenn Ihr lokaler Server von den Servern erreichbar ist, auf denen der Azure Pipelines-Dienst ausgeführt wird, dann:

  • Sie können den klassischen Buildvorgang einrichten und CI-Trigger konfigurieren

Wenn Ihr lokaler Server nicht von den Servern aus erreichbar ist, auf denen der Azure Pipelines-Dienst läuft, dann:

  • Sie können klassische Buildpipelines einrichten und manuelle Builds starten.
  • können Sie keine CI-Trigger konfigurieren

Hinweis

YAML-Pipelines funktionieren nicht mit lokalen Bitbucket-Repositorys.

Hinweis

PR-Trigger sind in lokalen Bitbucket-Repositorys nicht verfügbar.

Wenn Ihr lokaler Server von den gehosteten Agents aus erreichbar ist, können Sie die gehosteten Agents verwenden, um manuelle, geplante oder CI-Builds auszuführen. Andernfalls müssen Sie selbstgehostete Agents einrichten, die auf Ihren lokalen Server zugreifen und den Code abrufen können.

Erreichbar über Azure Pipelines

Wenn Ihr lokaler Bitbucket-Server über den Azure Pipelines-Dienst erreichbar ist, erstellen Sie eine Andere Git-Dienstverbindung , und verwenden Sie diese zum Erstellen einer Pipeline. Aktivieren Sie die Option Zugriff auf diesen Git-Server von Azure Pipelines aus zu versuchen.

CI-Trigger funktionieren über Abrufe und nicht über Webhooks. Mit anderen Worten: Azure Pipelines überprüft regelmäßig den Bitbucket-Server, ob Codeupdates vorhanden sind. Wenn vorhanden, startet Azure Pipelines eine neue Ausführung.

Nicht erreichbar von Azure Pipelines

Wenn der Bitbucket-Server nicht von Azure Pipelines aus erreicht werden kann, haben Sie zwei Möglichkeiten:

  • Arbeiten Sie mit Ihrer IT-Abteilung zusammen, um einen Netzwerkpfad zwischen Azure Pipelines und dem lokalen Git-Server zu öffnen. Beispielsweise können Sie Ihren Firewallregeln Ausnahmen hinzufügen, um den Datenverkehr von Azure Pipelines zuzulassen. Im Abschnitt zu Azure DevOps-IP-Adressen erfahren Sie, welche IP-Adressen Sie zulassen müssen. Darüber hinaus benötigen Sie einen öffentlichen DNS-Eintrag für den Bitbucket-Server, damit Azure Pipelines den FQDN Ihres Servers in eine IP-Adresse auflösen kann.

  • Sie können eine Andere Git-Verbindung verwenden, aber Azure Pipelines anweisen, nicht über Azure Pipelines auf diesen Git-Server zuzugreifen. CI- und PR-Trigger sind in anderen Git Repositorys nicht verfügbar. Sie können nur manuelle oder geplante Pipelineausführungen starten.

Erreichbar über von Microsoft gehostete Agents

Eine weitere Entscheidung, die Sie möglicherweise treffen müssen, ist die Verwendung von von Microsoft gehosteten Agents oder selbstgehosteten Agents zum Ausführen Ihrer Pipelines. Diese Auswahl hängt häufig davon ab, ob von Microsoft gehostete Agenten Ihren Server erreichen können. Um zu überprüfen, ob dies möglich ist, erstellen Sie eine Pipeline, um von Microsoft gehostete Agents zu verwenden, und fügen Sie einen Schritt hinzu, um den Quellcode von Ihrem Server auszuchecken. Wenn dies erfolgreich ist, können Sie weiterhin von Microsoft gehostete Agents verwenden.

Nicht erreichbar über von Microsoft gehostete Agents

Wenn die im obigen Abschnitt erwähnte einfache Testpipeline mit dem Fehler TF401019: The Git repository with name or identifier <your repo name> does not exist or you do not have permissions for the operation you are attempting fehlschlägt, ist der Bitbucket-Server von Microsoft gehosteten Agenten nicht erreichbar. Dies wird wahrscheinlich durch eine Firewall verursacht, die Datenverkehr von diesen Servern blockiert. In diesem Fall haben Sie zwei Möglichkeiten:

  • Arbeiten Sie mit Ihrer IT-Abteilung zusammen, um einen Netzwerkpfad zwischen von Microsoft gehosteten Agents und dem Bitbucket-Server zu öffnen. Weitere Informationen finden Sie im Abschnitt zum Netzwerk in von Microsoft gehosteten Agents.

  • Wechseln Sie zur Verwendung von selbstgehosteten Agents oder Skalierungsgruppen-Agents. Diese Agents können in Ihrem Netzwerk eingerichtet werden und haben daher Zugriff auf den Bitbucket-Server. Diese Agents erfordern nur ausgehende Verbindungen mit Azure Pipelines. Es ist nicht erforderlich, eine Firewall für eingehende Verbindungen zu öffnen. Stellen Sie sicher, dass der Name des Servers, den Sie beim Erstellen der Dienstverbindung angegeben haben, von den selbstgehosteten Agents aufgelöst werden kann.

IP-Adressen von Azure DevOps

Wenn Sie andere Git-Verbindungen verwenden, um eine klassische Pipeline einzurichten, die Kommunikation zwischen dem Azure Pipelines-Dienst und dem Bitbucket-Server deaktivieren und selbst gehostete Agenten zum Erstellen von Code verwenden, erhalten Sie eine verschlechterte Erfahrung:

  • Sie müssen den Namen des Repositorys bei der Erstellung der Pipeline manuell eingeben
  • Sie können keine CI-Trigger verwenden, da Azure Pipelines nicht in der Lage ist, nach Änderungen am Code zu suchen
  • Sie können keine geplanten Auslöser mit der Option verwenden, nur bei Änderungen zu erstellen
  • Sie können in der Benutzeroberfläche keine Informationen über die letzte Übertragung anzeigen

Wenn Sie diese Benutzeroberfläche verbessern möchten, ist es wichtig, dass Sie die Kommunikation von Azure Pipelines zu Bitbucket Server aktivieren.

Damit Datenverkehr von Azure DevOps Ihren Bitbucket-Server erreichen kann, fügen Sie der Zulassungsliste Ihrer Firewall die IP-Adressen oder Diensttags hinzu, die in eingehenden Verbindungen angegeben sind. Wenn Sie ExpressRoute verwenden, stellen Sie sicher, dass Sie auch ExpressRoute-IP-Bereiche in die Zulassungsliste Ihrer Firewall aufnehmen.

Erlauben Sie Azure Pipelines den Zugriff auf den Git-Server über die Verbindung mit anderen Git-Diensten .

Informationsläufe

Eine Informationsausführung teilt Ihnen mit, dass Azure DevOps den Quellcode einer YAML-Pipeline nicht abrufen konnte. Der Quellcodeabruf erfolgt als Reaktion auf externe Ereignisse, z. B. einen gepushten Commit. Der Abruf erfolgt auch als Reaktion auf interne Trigger, z. B. um zu überprüfen, ob Codeänderungen vorliegen und eine geplante Ausführung gestartet werden muss. Beim Quellcodeabruf können aus mehreren Gründen Fehler auftreten – ein häufiger Grund ist beispielsweise eine Anforderungsdrosselung durch den Git-Repositoryanbieter. Das Vorhandensein einer Informationsausführung bedeutet nicht unbedingt, dass Azure DevOps die Pipeline ausführen wird.

Im folgenden Screenshot sehen Sie ein Beispiel für eine Informationsausführung.

Screenshot of an informational pipeline run.

Sie können eine Informationsausführung an den folgenden Attributen erkennen:

  • Der Status lautet Canceled.
  • Die Dauer beträgt < 1s.
  • Der Ausführungsname enthält einen der folgenden Texte:
    • Could not retrieve file content for {file_path} from repository {repo_name} hosted on {host} using commit {commit_sha}.
    • Could not retrieve content for object {commit_sha} from repository {repo_name} hosted on {host}.
    • Could not retrieve the tree object {tree_sha} from the repository {repo_name} hosted on {host}.
    • Could not find {file_path} from repository {repo_name} hosted on {host} using version {commit_sha}. One of the directories in the path contains too many files or subdirectories.
  • Der Ausführungsname enthält im Allgemeinen den Bitbucket-/GitHub-Fehler, der zu einem Fehler beim Laden der YAML-Pipeline führte.
  • Es sind keine Stages/Aufträge/Schritte vorhanden.

Erfahren Sie mehr über Informationsausführungen.

Begrenzungen

Azure Pipelines lädt maximal 2000 Verzweigungen aus einem Repository in Dropdownlisten im Azure Devops-Portal, z. B. in die Standardverzweigung für manuelle und geplante Builds oder beim Auswählen einer Verzweigung, wenn eine Pipeline manuell ausgeführt wird. Wenn die gewünschte Verzweigung in der Liste nicht angezeigt wird, geben Sie den gewünschten Verzweigungsnamen manuell ein.

Häufig gestellte Fragen

Probleme im Zusammenhang mit der Bitbucket Server-Integration fallen in die folgenden Kategorien:

  • Fehlende Trigger: Meine Pipeline wird nicht ausgelöst, wenn ich eine Aktualisierung in das Repository pushe.
  • Fehler beim Auschecken: Meine Pipeline wird ausgelöst, aber sie schlägt im Auscheckschritt fehl.

Triggerfehler

Ich habe eine Änderung auf meinem Server vorgenommen, aber die Pipeline wird nicht ausgelöst.

Führen Sie die folgenden Schritte aus, um Fehler bei Triggern zu beheben:

  • Ist ihr Bitbucket-Server über Azure Pipelines zugänglich? Azure Pipelines fragt in regelmäßigen Abständen den Bitbucket-Server nach Änderungen ab. Wenn sich der Bitbucket-Server hinter einer Firewall befindet, erreicht dieser Datenverkehr Ihren Server möglicherweise nicht. Für weitere Informationen siehe IP-Adressen von Azure DevOps, und überprüfen Sie, ob Sie Ausnahmen für alle erforderlichen IP-Adressen vorgesehen haben. Diese IP-Adressen haben sich möglicherweise geändert, seit Sie die Ausnahmeregeln ursprünglich eingerichtet haben. Sie können manuelle Ausführungen nur starten, wenn Sie eine externe Git-Verbindung verwendet haben und nicht über Azure Pipelines auf Ihren Server zugegriffen werden kann.

  • Ist Ihre Pipeline angehalten oder deaktiviert? Öffnen Sie den Editor für die Pipeline, und wählen Sie Einstellungen aus, um dies zu überprüfen. Wenn Ihre Pipeline angehalten oder deaktiviert ist, funktionieren Trigger nicht.

  • Haben Sie die Verzweigungen oder Pfade ausgeschlossen, an die Sie Ihre Änderungen gepusht haben? Testen Sie dies, indem Sie eine Änderung an einen eingeschlossenen Pfad in einem eingeschlossenen Branch pushen. Denken Sie daran, dass bei Pfaden in Triggern die Groß-/Kleinschreibung beachtet wird. Stellen Sie sicher, dass Sie beim Angeben der Pfade in Triggern denselben Fall verwenden wie bei echten Ordnern.

Ich habe keine Updates an meinen Code gepusht, aber die Pipeline wird weiterhin ausgelöst.

  • Der Continuous Integration-Trigger für Bitbucket funktioniert über die Abfrage. Nach jedem Abfrageintervall versucht Azure Pipelines, den Bitbucket-Server zu kontaktieren, um zu überprüfen, ob der Code aktualisiert wurde. Wenn Azure Pipelines den Bitbucket-Server nicht erreichen kann (möglicherweise aufgrund eines Netzwerkproblems), starten wir eine neue Ausführung trotzdem unter der Annahme, dass Codeänderungen aufgetreten sind. Wenn Azure Pipelines den Code einer YAML-Pipeline nicht abrufen kann, wird eine Informationsausführung erstellt.

Fehler beim Auschecken

Wenn ich versuche, eine neue Ausführung manuell zu starten, gibt es eine Verzögerung von 4-8 Minuten, bevor sie gestartet wird.

  • Ihr Bitbucket-Server ist von Azure Pipelines nicht erreichbar. Stellen Sie sicher, dass Sie nicht die Option ausgewählt haben, um über Azure Pipelines in der Bitbucket-Dienstverbindung auf diesen Git-Server zuzugreifen . Wenn diese Option ausgewählt ist, versucht Azure Pipelines, eine Verbindung mit Ihrem Server zu kontaktieren. Da Ihr Server nicht erreichbar ist, wird ein Timeout erreicht, und die Ausführung wird trotzdem gestartet. Wenn Sie diese Option deaktivieren, beschleunigen Sie Ihre manuellen Ausführungen.

Der Auscheck-Schritt schlägt mit dem Fehler fehl, dass der Server nicht behoben werden kann.

Verwenden Sie von Microsoft gehostete Agents? Wenn ja, können diese Agenten Ihren Bitbucket-Server möglicherweise nicht erreichen. Weitere Informationen finden Sie unter Nicht erreichbar über von Microsoft gehostete Agents.