Tworzenie lokalnych repozytoriów Bitbucket

Azure DevOps Services

Uwaga

Aby zintegrować usługę Bitbucket Cloud z usługą Azure Pipelines, zobacz Bitbucket Cloud.

Możesz zintegrować lokalny serwer Bitbucket lub inny serwer Git z usługą Azure Pipelines. Serwer lokalny może być uwidoczniony w Internecie lub może nie być.

Jeśli serwer lokalny jest dostępny z serwerów z uruchomioną usługą Azure Pipelines, wówczas:

  • Możesz skonfigurować klasyczne kompilacje i skonfigurować wyzwalacze ciągłej integracji

Jeśli serwer lokalny nie jest dostępny z serwerów z uruchomioną usługą Azure Pipelines, wówczas:

  • Możesz skonfigurować klasyczne potoki kompilacji i uruchomić kompilacje ręczne
  • Nie można skonfigurować wyzwalaczy ciągłej integracji

Uwaga

Potoki YAML nie działają z lokalnymi repozytoriami Bitbucket.

Uwaga

Wyzwalacze żądania ściągnięcia nie są dostępne w lokalnych repozytoriach Bitbucket.

Jeśli serwer lokalny jest dostępny z hostowanych agentów, możesz użyć hostowanych agentów do uruchamiania kompilacji ręcznych, zaplanowanych lub ci. W przeciwnym razie należy skonfigurować własnych agentów, którzy mogą uzyskiwać dostęp do serwera lokalnego i pobierać kod.

Osiągalny z usługi Azure Pipelines

Jeśli lokalny serwer Bitbucket jest dostępny z poziomu usługi Azure Pipelines, utwórz inne połączenie usługi Git i użyj go do utworzenia potoku. Zaznacz opcję Spróbuj uzyskać dostęp do tego serwera Git z usługi Azure Pipelines.

Wyzwalacze ciągłej integracji działają przez sondowanie, a nie za pośrednictwem elementów webhook. Innymi słowy usługa Azure Pipelines okresowo sprawdza serwer Bitbucket, jeśli istnieją jakiekolwiek aktualizacje kodu. Jeśli istnieją, usługa Azure Pipelines uruchamia nowy przebieg.

Nieosiągalny z usługi Azure Pipelines

Jeśli nie można uzyskać dostępu do serwera Bitbucket z usługi Azure Pipelines, masz dwie opcje:

  • We współpracy z działem IT otwórz ścieżkę sieciową między usługą Azure Pipelines i lokalnym serwerem Git. Możesz na przykład dodać wyjątki do reguł zapory, aby zezwolić na przepływ ruchu z usługi Azure Pipelines. Zobacz sekcję na adresach IP usługi Azure DevOps, aby zobaczyć, które adresy IP należy zezwolić. Ponadto musisz mieć publiczny wpis DNS dla serwera Bitbucket, aby usługa Azure Pipelines mogła rozpoznać nazwę FQDN serwera na adres IP.

  • Możesz użyć innego połączenia Git, ale poinformować usługę Azure Pipelines, że nie próbuje uzyskać dostępu do tego serwera Git z usługi Azure Pipelines. Wyzwalacze ciągłej integracji i żądania ściągnięcia nie są dostępne w przypadku innych repozytoriów Git . Można uruchamiać tylko ręczne lub zaplanowane uruchomienia potoków.

Osiągalne z agentów hostowanych przez firmę Microsoft

Kolejną decyzją, którą prawdopodobnie musisz podjąć, jest użycie agentów hostowanych przez firmę Microsoft lub własnych agentów do uruchamiania potoków. Ten wybór często zależy od tego, czy agenci hostowani przez firmę Microsoft mogą dotrzeć do serwera. Aby sprawdzić, czy mogą, utwórz potok, aby używać agentów hostowanych przez firmę Microsoft i upewnij się, że dodano krok w celu wyewidencjonowania kodu źródłowego z serwera. Jeśli to przejdzie, możesz kontynuować korzystanie z agentów hostowanych przez firmę Microsoft.

Nieosiągalne z agentów hostowanych przez firmę Microsoft

Jeśli prosty potok testu wymieniony w powyższej sekcji zakończy się niepowodzeniem z powodu błędu 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, serwer Bitbucket nie jest osiągalny z agentów hostowanych przez firmę Microsoft. Jest to prawdopodobnie spowodowane blokowaniem ruchu przez zaporę z tych serwerów. W tym przypadku dostępne są dwie opcje:

  • Skontaktuj się z działem IT, aby otworzyć ścieżkę sieciową między agentami hostowanymi przez firmę Microsoft i serwerem Bitbucket. Zobacz sekcję dotyczącą sieci w agentach hostowanych przez firmę Microsoft.

  • Przejdź do korzystania z własnych agentów lub agentów zestawu skalowania. Tych agentów można skonfigurować w sieci i w związku z tym będzie miał dostęp do serwera Bitbucket. Ci agenci wymagają tylko połączeń wychodzących z usługą Azure Pipelines. Nie ma potrzeby otwierania zapory dla połączeń przychodzących. Upewnij się, że nazwa serwera określonego podczas tworzenia połączenia z usługą jest rozpoznawalna na podstawie własnych agentów.

Adresy IP usługi Azure DevOps

Jeśli używasz innego połączenia Git do konfigurowania klasycznego potoku, wyłączasz komunikację między usługą Azure Pipelines i serwerem Bitbucket i używasz własnych agentów do tworzenia kodu, uzyskasz obniżoną wydajność:

  • Musisz ręcznie wpisać nazwę repozytorium podczas tworzenia potoku
  • Nie można używać wyzwalaczy ciągłej integracji, ponieważ usługa Azure Pipelines nie będzie mogła sondować pod kątem zmian w kodzie
  • Nie można używać zaplanowanych wyzwalaczy z opcją kompilowania tylko wtedy, gdy występują zmiany
  • Nie można wyświetlić informacji o najnowszym zatwierdzeniu w interfejsie użytkownika

Jeśli chcesz ulepszyć to środowisko, należy włączyć komunikację z usługi Azure Pipelines do serwera Bitbucket.

Aby zezwolić na ruch z usługi Azure DevOps do serwera Bitbucket, dodaj adresy IP lub tagi usług określone w połączeniach przychodzących do listy dozwolonych zapory. Jeśli używasz usługi ExpressRoute, dołącz również zakresy adresów IP usługi ExpressRoute do listy dozwolonych zapory.

Zezwól usłudze Azure Pipelines na próbę uzyskania dostępu do serwera Git w innym połączeniu usługi Git .

Uruchomienia informacyjne

Uruchomienie informacyjne informuje, że usługa Azure DevOps nie może pobrać kodu źródłowego potoku YAML. Pobieranie kodu źródłowego odbywa się w odpowiedzi na zdarzenia zewnętrzne, na przykład wypychane zatwierdzenie. Dzieje się to również w odpowiedzi na wyzwalacze wewnętrzne, na przykład, aby sprawdzić, czy istnieją zmiany kodu i rozpocząć zaplanowane uruchomienie, czy nie. Pobieranie kodu źródłowego może zakończyć się niepowodzeniem z wielu powodów, z częstym ograniczaniem żądań przez dostawcę repozytorium git. Istnienie przebiegu informacyjnego niekoniecznie oznacza, że usługa Azure DevOps będzie uruchamiać potok.

Przebieg informacyjny wygląda podobnie jak na poniższym zrzucie ekranu.

Screenshot of an informational pipeline run.

Przebieg informacyjny można rozpoznać za pomocą następujących atrybutów:

  • Stan to Canceled
  • Czas trwania to < 1s
  • Nazwa przebiegu zawiera jeden z następujących tekstów:
    • 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.
  • Nazwa uruchomienia zazwyczaj zawiera błąd BitBucket/GitHub, który spowodował niepowodzenie ładowania potoku YAML
  • Brak etapów/zadań/kroków

Dowiedz się więcej na temat przebiegów informacyjnych.

Ograniczenia

Usługa Azure Pipelines ładuje maksymalnie 2000 gałęzi z repozytorium do list rozwijanych w portalu usługi Azure Devops, na przykład w domyślnej gałęzi ręcznej i zaplanowanej kompilacji lub podczas wybierania gałęzi podczas ręcznego uruchamiania potoku. Jeśli na liście nie widzisz żądanej gałęzi, wpisz żądaną nazwę gałęzi ręcznie.

Często zadawane pytania

Problemy związane z integracją serwera Bitbucket należą do następujących kategorii:

  • Wyzwalacze zakończone niepowodzeniem: mój potok nie jest wyzwalany podczas wypychania aktualizacji do repozytorium.
  • Wyewidencjonowanie zakończone niepowodzeniem: mój potok jest wyzwalany, ale kończy się niepowodzeniem w kroku wyewidencjonowania.

Wyzwalacze zakończone niepowodzeniem

Wypchnąłem zmianę na mój serwer, ale potok nie jest wyzwalany.

Wykonaj poszczególne z tych kroków, aby rozwiązać problemy z wyzwalaczami zakończonymi niepowodzeniem:

  • Czy serwer Bitbucket jest dostępny z usługi Azure Pipelines? Usługa Azure Pipelines okresowo sonduje serwer Bitbucket pod kątem zmian. Jeśli serwer Bitbucket znajduje się za zaporą, ten ruch może nie dotrzeć do serwera. Aby uzyskać więcej informacji, zobacz Adresy IP usługi Azure DevOps i sprawdź, czy udzielono wyjątków do wszystkich wymaganych adresów IP. Te adresy IP mogły ulec zmianie, ponieważ pierwotnie skonfigurowano reguły wyjątków. Uruchamianie przebiegów ręcznych można uruchomić tylko wtedy, gdy użyto zewnętrznego połączenia Git i jeśli serwer nie jest dostępny z usługi Azure Pipelines.

  • Czy potok jest wstrzymany lub wyłączony? Otwórz edytor potoku, a następnie wybierz pozycję Ustawienia, aby sprawdzić. Jeśli potok jest wstrzymany lub wyłączony, wyzwalacze nie działają.

  • Czy wykluczyno gałęzie lub ścieżki, do których wypchnięliśmy zmiany? Przetestuj, wypychając zmianę do dołączonej ścieżki w dołączonej gałęzi. Należy pamiętać, że w wyzwalaczach uwzględniana jest wielkość liter. Podczas określania ścieżek w wyzwalaczach upewnij się, że używasz tego samego przypadku co foldery rzeczywiste.

Nie wypchnąłem żadnych aktualizacji do mojego kodu, ale potok jest nadal wyzwalany.

  • Wyzwalacz ciągłej integracji dla rozwiązania Bitbucket działa przez sondowanie. Po każdym interwale sondowania usługa Azure Pipelines próbuje skontaktować się z serwerem Bitbucket, aby sprawdzić, czy istnieją jakiekolwiek aktualizacje kodu. Jeśli usługa Azure Pipelines nie może nawiązać połączenia z serwerem Bitbucket (prawdopodobnie z powodu problemu z siecią), uruchomimy mimo to nowy przebieg przy założeniu, że mogły wystąpić zmiany kodu. Gdy usługa Azure Pipelines nie może pobrać kodu potoku YAML, zostanie utworzony przebieg informacyjny.

Nieudane wyewidencjonowanie

Gdy próbuję uruchomić nowy przebieg ręcznie, przed rozpoczęciem następuje opóźnienie 4–8 minut.

  • Serwer Bitbucket nie jest dostępny z usługi Azure Pipelines. Upewnij się, że nie wybrano opcji próby uzyskania dostępu do tego serwera Git z usługi Azure Pipelines w połączeniu z usługą Bitbucket. Jeśli ta opcja zostanie wybrana, usługa Azure Pipelines podejmie próbę skontaktowania się z serwerem i ponieważ serwer jest niedostępny, w końcu upłynął limit czasu i mimo to uruchomi przebieg. Usunięcie zaznaczenia tej opcji przyspiesza ręczne przebiegi.

Krok wyewidencjonowania kończy się niepowodzeniem z powodu błędu, którego nie można rozpoznać.

Czy używasz agentów hostowanych przez firmę Microsoft? Jeśli tak, ci agenci mogą nie być w stanie nawiązać połączenia z serwerem Bitbucket. Aby uzyskać więcej informacji, zobacz Nieosiągalny dostęp od agentów hostowanych przez firmę Microsoft.