Dela via


Skapa lokala Bitbucket-lagringsplatser

Azure DevOps Services

Kommentar

Information om hur du integrerar Bitbucket Cloud med Azure Pipelines finns i Bitbucket Cloud.

Du kan integrera din lokala Bitbucket-server eller en annan Git-server med Azure Pipelines. Din lokala server kan vara exponerad för Internet eller så kanske den inte är det.

Om din lokala server kan nås från servrarna som kör Azure Pipelines-tjänsten:

  • du kan konfigurera klassisk version och konfigurera CI-utlösare

Om din lokala server inte kan nås från servrarna som kör Azure Pipelines-tjänsten:

  • du kan konfigurera klassiska byggpipelines och starta manuella versioner
  • du kan inte konfigurera CI-utlösare

Kommentar

YAML-pipelines fungerar inte med lokala Bitbucket-lagringsplatser.

Kommentar

PR-utlösare är inte tillgängliga med lokala Bitbucket-lagringsplatser.

Om din lokala server kan nås från de värdbaserade agenterna kan du använda de värdbaserade agenterna för att köra manuella, schemalagda eller CI-versioner. Annars måste du konfigurera lokalt installerade agenter som kan komma åt din lokala server och hämta koden.

Kan nås från Azure Pipelines

Om din lokala Bitbucket-server kan nås från Azure Pipelines-tjänsten skapar du en annan Git-tjänstanslutning och använder den för att skapa en pipeline. Kontrollera alternativet för Att försöka komma åt den här Git-servern från Azure Pipelines.

CI-utlösare fungerar genom avsökning och inte via webhooks. Med andra ord kontrollerar Azure Pipelines regelbundet Bitbucket-servern om det finns några uppdateringar av koden. I så fall startar Azure Pipelines en ny körning.

Kan inte nås från Azure Pipelines

Om Bitbucket-servern inte kan nås från Azure Pipelines har du två alternativ:

  • Arbeta med IT-avdelningen för att öppna en nätverkssökväg mellan Azure Pipelines och den lokala Git-servern. Du kan till exempel lägga till undantag i brandväggsreglerna så att trafik från Azure Pipelines kan flöda igenom. Se avsnittet om Azure DevOps-IP-adresser för att se vilka IP-adresser du behöver tillåta. Dessutom måste du ha en offentlig DNS-post för Bitbucket-servern så att Azure Pipelines kan matcha serverns fullständiga domännamn till en IP-adress.

  • Du kan använda en annan Git-anslutning men be Azure Pipelines att inte försöka komma åt den här Git-servern från Azure Pipelines. CI- och PR-utlösare är inte tillgängliga med andra Git-lagringsplatser . Du kan bara starta manuella eller schemalagda pipelinekörningar.

Kan nås från Microsoft-värdbaserade agenter

Ett annat beslut du eventuellt måste fatta är om du ska använda Microsoft-värdbaserade agenter eller lokalt installerade agenter för att köra dina pipelines. Det här valet beror ofta på om Microsoft-värdbaserade agenter kan nå servern. Om du vill kontrollera om de kan kan du skapa en pipeline för att använda Microsoft-värdbaserade agenter och se till att lägga till ett steg för att kolla in källkoden från servern. Om detta godkänns kan du fortsätta att använda Microsoft-värdbaserade agenter.

Kan inte nås från Microsoft-värdbaserade agenter

Om den enkla testpipeline som nämns i ovanstående avsnitt misslyckas med felet 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 attemptingkan Bitbucket-servern inte nås från Microsoft-värdbaserade agenter. Detta orsakas förmodligen igen av en brandvägg som blockerar trafik från dessa servrar. Du har två alternativ i det här fallet:

  • Arbeta med IT-avdelningen för att öppna en nätverkssökväg mellan Microsoft-värdbaserade agenter och Bitbucket-servern. Se avsnittet om nätverk i Microsoft-värdbaserade agenter.

  • Växla till att använda lokalt installerade agenter eller skalningsuppsättningsagenter. Dessa agenter kan konfigureras i nätverket och har därför åtkomst till Bitbucket-servern. Dessa agenter kräver endast utgående anslutningar till Azure Pipelines. Du behöver inte öppna en brandvägg för inkommande anslutningar. Kontrollera att namnet på den server som du angav när du skapade tjänstanslutningen kan matchas från de lokalt installerade agenterna.

Ip-adresser för Azure DevOps

När du använder Annan Git-anslutning för att konfigurera en klassisk pipeline, inaktiverar kommunikationen mellan Azure Pipelines-tjänsten och Bitbucket-servern och använder lokalt installerade agenter för att skapa kod, får du en försämrad upplevelse:

  • Du måste ange namnet på lagringsplatsen manuellt när pipelinen skapas
  • Du kan inte använda CI-utlösare eftersom Azure Pipelines inte kan söka efter ändringar i koden
  • Du kan inte använda schemalagda utlösare med alternativet att endast skapa när det finns ändringar
  • Du kan inte visa information om den senaste incheckningen i användargränssnittet

Om du vill förbättra den här upplevelsen är det viktigt att du aktiverar kommunikation från Azure Pipelines till Bitbucket Server.

Om du vill tillåta trafik från Azure DevOps att nå bitbucket-servern lägger du till DE IP-adresser eller tjänsttaggar som anges i Inkommande anslutningar till brandväggens tillåtna lista. Om du använder ExpressRoute måste du även inkludera ExpressRoute IP-intervall i brandväggens tillåtna lista.

Tillåt att Azure Pipelines försöker komma åt Git-servern i den andra Git-tjänstanslutningen.

Informationskörningar

En informationskörning anger att Azure DevOps inte kunde hämta en YAML-pipelines källkod. Källkodshämtning sker som svar på externa händelser, till exempel en push-överföring. Det händer också som svar på interna utlösare, till exempel för att kontrollera om det finns kodändringar och starta en schemalagd körning eller inte. Källkodshämtningen kan misslyckas av flera orsaker, där en frekvent begäran begränsas av git-lagringsplatsens provider. Förekomsten av en informationskörning innebär inte nödvändigtvis att Azure DevOps skulle köra pipelinen.

En informationskörning ser ut som i följande skärmbild.

Screenshot of an informational pipeline run.

Du kan identifiera en informationskörning med följande attribut:

  • Status är Canceled
  • Varaktigheten är < 1s
  • Körningsnamnet innehåller någon av följande texter:
    • 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.
  • Körningsnamnet innehåller vanligtvis BitBucket/GitHub-felet som gjorde att YAML-pipelinebelastningen misslyckades
  • Inga steg/jobb/steg

Läs mer om informationskörningar.

Begränsningar

Azure Pipelines läser in högst 2 000 grenar från en lagringsplats till listrutor i Azure Devops-portalen, till exempel i standardgrenen för manuella och schemalagda byggen , eller när du väljer en gren när du kör en pipeline manuellt. Om du inte ser önskad gren i listan skriver du önskat grennamn manuellt.

Vanliga frågor

Problem som rör Bitbucket Server-integrering finns i följande kategorier:

  • Utlösare som misslyckas: Min pipeline utlöses inte när jag skickar en uppdatering till lagringsplatsen.
  • Misslyckad utcheckning: Min pipeline utlöses, men den misslyckas i utcheckningssteget.

Felutlösare

Jag har push-överfört en ändring till min server, men pipelinen utlöses inte.

Följ vart och ett av dessa steg för att felsöka dina felutlösare:

  • Är bitbucket-servern tillgänglig från Azure Pipelines? Azure Pipelines avsöker regelbundet Bitbucket-servern efter ändringar. Om Bitbucket-servern ligger bakom en brandvägg kanske trafiken inte når servern. Mer information finns i Ip-adresser för Azure DevOps och kontrollera att du har beviljat undantag till alla nödvändiga IP-adresser. Dessa IP-adresser kan ha ändrats eftersom du ursprungligen har konfigurerat undantagsreglerna. Du kan bara starta manuella körningar om du använde en extern Git-anslutning och om servern inte är tillgänglig från Azure Pipelines.

  • Har pipelinen pausats eller inaktiverats? Öppna redigeraren för pipelinen och välj sedan Inställningar att kontrollera. Om pipelinen är pausad eller inaktiverad fungerar inte utlösare.

  • Har du exkluderat de grenar eller sökvägar som du har push-överfört ändringarna till? Testa genom att push-överföra en ändring till en inkluderad sökväg i en inkluderad gren. Observera att sökvägarna i utlösare är skiftlägeskänsliga. Kontrollera att du använder samma skiftläge som för riktiga mappar när du anger sökvägarna i utlösare.

Jag har inte push-överfört några uppdateringar till min kod, men pipelinen utlöses fortfarande.

  • Utlösaren för kontinuerlig integrering för Bitbucket fungerar genom avsökning. Efter varje avsökningsintervall försöker Azure Pipelines kontakta Bitbucket-servern för att kontrollera om koden har uppdaterats. Om Azure Pipelines inte kan nå Bitbucket-servern (möjligen på grund av ett nätverksproblem) startar vi en ny körning ändå förutsatt att det kan ha skett kodändringar. När Azure Pipelines inte kan hämta en YAML-pipelines kod skapar den en informationskörning.

Misslyckad utcheckning

När jag försöker starta en ny körning manuellt är det en fördröjning på 4–8 minuter innan den startar.

  • Bitbucket-servern kan inte nås från Azure Pipelines. Kontrollera att du inte har valt alternativet för att försöka komma åt den här Git-servern från Azure Pipelines i Bitbucket-tjänstanslutningen. Om det alternativet har valts försöker Azure Pipelines kontakta servern och eftersom servern inte kan nås överskrider den till slut tidsgränsen och startar körningen ändå. Om du avmarkerar det alternativet påskyndas dina manuella körningar.

Utcheckningssteget misslyckas med felet att servern inte kan lösas.

Använder du Microsoft-värdbaserade agenter? I så fall kanske dessa agenter inte kan nå Bitbucket-servern. Mer information finns i Kan inte nås från Microsoft-värdbaserade agenter .