Udostępnij za pośrednictwem


Łączenie serwera Azure DevOps Server z usługą GitHub (lokalnie)

Azure DevOps Server 2022 | Azure DevOps Server 2020 | Azure DevOps Server 2019

Po połączeniu projektu usługi Azure DevOps Server z repozytoriami GitHub można łączyć się między zatwierdzeniami usługi GitHub i żądaniami ściągnięcia do elementów roboczych. Usługi GitHub można używać do tworzenia oprogramowania podczas planowania i śledzenia pracy przy użyciu usługi Azure Boards.

Uwaga

Lokalna usługa Azure DevOps Server 2020 obsługuje integrację z repozytoriami GitHub.com i GitHub Enterprise Server. Jeśli chcesz nawiązać połączenie z usług Azure DevOps Services, zobacz Łączenie usługi Azure Boards z usługą GitHub.

Po połączeniu projektu usługi Azure DevOps Server z repozytoriami serwera GitHub Enterprise Server można łączyć się między zatwierdzeniami usługi GitHub i żądaniami ściągnięcia do elementów roboczych. Usługi GitHub Enterprise można używać do tworzenia oprogramowania podczas planowania i śledzenia pracy przy użyciu usługi Azure Boards.

Uwaga

Lokalna usługa Azure DevOps Server 2019 obsługuje integrację z repozytoriami GitHub Enterprise Server. Jeśli chcesz nawiązać połączenie z usług Azure DevOps Services, zobacz Łączenie usługi Azure Boards z usługą GitHub.

Wymagania wstępne

  • Integracja z usługą GitHub:
  • Połączenie projektu: połącz się z usługą Azure Boards lub projektem usługi Azure DevOps. Jeśli nie masz jeszcze projektu, utwórz go.
  • Uprawnienia:
    • Być członkiem grupy Administratorzy kolekcji projektów i grupy Współautorzy projektu. Jeśli projekt został utworzony, masz uprawnienia.
    • Być administratorem serwera GitHub Enterprise Server, z którym nawiązujesz połączenie.

Opcje uwierzytelniania

Obsługiwane są następujące opcje uwierzytelniania.

Uwaga

Protokół OAuth nie jest obsługiwany w przypadku usługi Azure DevOps Server 2020.

Rejestrowanie usługi Azure DevOps w usłudze GitHub jako aplikacji OAuth

Jeśli planujesz używać protokołu OAuth do łączenia serwera Azure DevOps Server z serwerem GitHub Enterprise Server, najpierw musisz zarejestrować aplikację jako aplikację OAuth. Aby uzyskać więcej informacji, zobacz Tworzenie aplikacji OAuth.

Rejestrowanie usługi Azure DevOps Server

  1. Zaloguj się do portalu internetowego dla serwera GitHub Enterprise.

    Zrzut ekranu przedstawiający logowanie do usługi GitHub Enterprise Server.

  2. Wybierz pozycję Ustawienia Ustawienia Dla>>deweloperów Aplikacje>Oauth Nowa aplikacja OAuth.

    Zrzut ekranu przedstawiający sekwencję pobierania do nowej aplikacji OAuth.

  3. Wprowadź informacje, aby zarejestrować aplikację usługi Azure DevOps Server.

    Zrzut ekranu przedstawiający rejestrację projektu usługi Azure DevOps Server.

    W polu Adres URL strony głównej określ publiczny adres URL kolekcji projektu. Ten adres URL można znaleźć po otwarciu konsoli administracyjnej usługi Azure DevOps i wyświetleniu węzła Warstwa aplikacji.

    Zrzut ekranu przedstawiający konsolę administracyjną usługi Azure DevOps Server, warstwę aplikacji.

    W przypadku adresu URL wywołania zwrotnego autoryzacji użyj następującego wzorca, aby utworzyć adres URL.

    {Azure DevOps Server Public Url}/{Collection Name}/_admin/oauth2/callback

    Na przykład:

    http://contoso/DefaultCollection/_admin/oauth2/callback

    https://tfs.contoso.com/MyCollection/_admin/oauth2/callback

  4. Wybierz pozycję Zarejestruj aplikację.

  5. Zostanie wyświetlona strona zawierająca identyfikator klienta i klucz tajny klienta dla zarejestrowanej aplikacji OAuth.

    Zrzut ekranu przedstawiający identyfikator klienta i klucz tajny klienta dla zarejestrowanej aplikacji OAuth.

Rejestrowanie konfiguracji protokołu OAuth na serwerze Azure DevOps Server

  1. Zaloguj się do portalu internetowego dla serwera Usługi Azure DevOps.

  2. Dodaj konfigurację Oauth usługi GitHub Enterprise do kolekcji usługi Azure DevOps Server.

  3. Wybierz pozycję Ustawienia>administratora Konfiguracje>protokołu Oauth Dodaj konfigurację protokołu Oauth.

    Zrzut ekranu przedstawiający sekwencję kroków w celu dodania konfiguracji protokołu OAuth.

  4. Wprowadź informacje, a następnie wybierz pozycję Utwórz.

    Zrzut ekranu przedstawiający okno dialogowe konfiguracji protokołu OAuth.

Łączenie serwera Azure DevOps Server z serwerem GitHub Enterprise Server

Z projektem usługi Azure Boards można połączyć maksymalnie 250 repozytoriów GitHub.

Uwaga

Połączenie z więcej niż 100 repozytoriami GitHub wymaga aktualizacji serwera Azure DevOps Server 2020.1 lub nowszej.
Połączenie z repozytoriami GitHub.com wymaga usługi Azure DevOps Server 2020.1.1 Patch 2 lub nowszej wersji.

Możesz połączyć maksymalnie 100 repozytoriów GitHub z projektem usługi Azure Boards. Tego limitu nie można zmienić.

  1. Otwórz portal internetowy dla serwera Azure DevOps Server.

  2. Wybierz logo usługi Azure DevOps, aby otworzyć projekty, a następnie wybierz projekt usługi Azure Boards, który chcesz skonfigurować w celu nawiązania połączenia z repozytoriami GitHub Enterprise.

  1. Wybierz pozycję Ustawienia>projektu Połączenia GitHub.

    Zrzut ekranu przedstawiający otwieranie połączeń usługi GitHub ustawień>projektu.

  2. Jeśli po raz pierwszy wykonuje połączenie z projektu, wybierz metodę uwierzytelniania, której chcesz użyć, aby nawiązać połączenie:

    Zrzut ekranu przedstawiający nawiązywanie połączenia po raz pierwszy przy użyciu poświadczeń usługi GitHub.

    W przeciwnym razie wybierz pozycję Nowe połączenie, a następnie wybierz metodę uwierzytelniania w oknie dialogowym Nowe połączenie.

  1. Wybierz pozycję Ustawienia>projektu Połączenia>usługi GitHub Connect your GitHub Enterprise account (Połącz konto usługi GitHub Enterprise).

    Zrzut ekranu przedstawiający ustawienia projektu z wybraną pozycją Integracje.

    Możesz też wybrać osobisty token dostępu lub nazwę użytkownika i hasło, jeśli używasz tych poświadczeń.

Nawiązywanie połączenia za pomocą protokołu OAuth

Wybierz konfigurację skonfigurowaną w kroku 4 sekcji Rejestrowanie konfiguracji OAuth na serwerze Azure DevOps Server. Następnie wybierz pozycję Połącz.

Zrzut ekranu przedstawiający nowe połączenie GitHub Enterprise i okno dialogowe OAuth.

Nawiązywanie połączenia przy użyciu osobistego tokenu dostępu

  1. Aby utworzyć osobisty token dostępu, zobacz Tworzenie osobistego tokenu dostępu.

    Napiwek

    Podczas tworzenia identyfikatora PAT usługi GitHub upewnij się, że zostały uwzględnione następujące zakresy: repo, admin:repo_hook, read:user, user:email.

  2. Wprowadź adres URL serwera GitHub Enterprise i poświadczenia osobistego tokenu dostępu rozpoznane przez ten serwer. A następnie wybierz pozycję Połącz.

Zrzut ekranu przedstawiający logowanie się przy użyciu tokenu DOSTĘPU.

Nawiązywanie połączenia przy użyciu nazwy użytkownika i hasła

  1. Wprowadź adres URL serwera GitHub Enterprise i poświadczenia konta administratora rozpoznane przez ten serwer. A następnie wybierz pozycję Połącz.

Zrzut ekranu przedstawiający logowanie się przy użyciu nazwy użytkownika i hasła.

  1. W oknie dialogowym są wyświetlane wszystkie repozytoria, dla których masz uprawnienia administracyjne usługi GitHub. Możesz przełączać się między elementami Mine i All , aby określić, czy inne są wyświetlane, a następnie sprawdzić te, które chcesz dodać. Po zakończeniu wybierz pozycję Zapisz .

    Zrzut ekranu repozytoriów do dodania.

  2. Aby nawiązać połączenie z kontem usługi GitHub lub organizacją z usługi Azure Boards po raz pierwszy, zainstaluj również aplikację Usługi Azure Boards dla usługi GitHub. Wykonaj integrację, postępując zgodnie z procedurami opisanymi w temacie Potwierdzanie połączenia.

Rozwiązywanie problemów z połączeniem

Integracja usługi Azure Boards-GitHub opiera się na różnych protokołach uwierzytelniania do obsługi połączenia. Zmiany zakresu uprawnień użytkownika lub poświadczeń uwierzytelniania mogą spowodować odwołanie repozytoriów GitHub połączonych z usługą Azure Boards.

Aby zapoznać się z omówieniem integracji obsługiwanej przez aplikację Usługi Azure Boards dla usługi GitHub, zobacz Integracja z usługą Azure Boards-GitHub.

Obsługiwane opcje uwierzytelniania

Poniższe opcje uwierzytelniania są obsługiwane na podstawie platformy GitHub, z którą chcesz nawiązać połączenie.

Platforma

GitHub.com

GitHub Enterprise Server

Azure DevOps Services

  • konto użytkownika GitHub.com
  • Osobisty token dostępu (PAT)
  • OAuth
  • Osobisty token dostępu
  • Nazwa użytkownika i hasło

Oprogramowanie Azure DevOps Server 2020

Nie dotyczy

  • Osobisty token dostępu
  • Nazwa użytkownika i hasło

Azure DevOps Server 2019

Nie dotyczy

  • OAuth
  • Osobisty token dostępu
  • Nazwa użytkownika i hasło

Uwaga

Dzięki aplikacji Azure Boards dla usług GitHub usługi Azure Boards i Azure DevOps Services integrują się z repozytoriami GitHub.com i GitHub Enterprise Server. Usługa Azure DevOps Server 2019 i nowsze wersje obsługują integrację tylko z repozytoriami GitHub Enterprise Server. Integracja z innymi repozytoriami Git nie jest obsługiwana.

Rozwiązywanie problemów z dostępem

Gdy połączenie usługi Azure Boards z usługą GitHub nie ma już dostępu, wyświetla stan alertu w interfejsie użytkownika z czerwonym-X. Umieść kursor na alercie i wskazuje, że poświadczenia nie są już prawidłowe. Aby rozwiązać ten problem, usuń połączenie i utwórz ponownie nowe połączenie.

Zrzut ekranu przedstawiający nieudane połączenie.

Gdy połączenie usługi Azure Boards z usługą GitHub nie ma już dostępu, w interfejsie użytkownika jest wyświetlany stan alertu z czerwoną etykietką narzędzia, taką jak Nie można nawiązać połączenia z usługą GitHub.

Rozważ następujące rozwiązania:

  • Jeśli połączenie korzysta z protokołu OAuth:

    • Aplikacja usługi Azure Boards nie mogła uzyskać dostępu do jednego z repozytoriów.

    • Usługa GitHub może być niedostępna/nieosiągalna. Ta niedostępność może być przyczyną awarii w usłudze lub problemu z infrastrukturą/siecią lokalną. Stan usługi można sprawdzić za pomocą następujących linków:

      Usuń i ponownie utwórz połączenie z repozytorium GitHub. To ponowne utworzenie połączenia powoduje, że usługa GitHub wyświetli monit o ponowne uwierzytelnienie usługi Azure Boards.

  • Jeśli połączenie korzysta z patu:

    • Identyfikator pat może zostać odwołany lub zmienione wymagane zakresy uprawnień i są niewystarczające.

    • Użytkownik może utracić uprawnienia administracyjne w repozytorium GitHub.

      Utwórz ponownie identyfikator PAT i upewnij się, że zakres tokenu obejmuje wymagane uprawnienia: repo, read:user, user:email, admin:repo_hook.

Aktualizowanie definicji XML dla wybranych typów elementów roboczych

Jeśli Twoja organizacja dostosowuje śledzenie pracy przy użyciu hostowanego kodu XML lub lokalnego modelu procesu XML i chce zintegrować typy linków Usługi GitHub z sekcją Programowanie formularzy elementów roboczych, musisz zaktualizować definicje XML odpowiednich typów elementów roboczych.

Aby na przykład połączyć scenariusze użytkownika i usterki z zatwierdzeniami i żądaniami ściągnięcia usługi GitHub w sekcji Programowanie formularzy elementów roboczych, musisz zaktualizować definicje XML dla tych typów elementów roboczych.

Aby zmodyfikować definicje XML, wykonaj kroki opisane w temacie Hostowany model przetwarzania XML. Dla każdego typu elementu roboczego:

  1. Znajdź sekcję Group Label="Development" .
  2. Aby obsługiwać typy linków zewnętrznych, zatwierdzenia usługi GitHub i żądania ściągnięcia w usłudze GitHub dodaj następujące wiersze kodu:

Ta integracja umożliwia bezproblemowe śledzenie działań usługi GitHub bezpośrednio z elementów roboczych w usłudze Azure Boards.

             <ExternalLinkFilter Type="GitHub Pull Request" />  
             <ExternalLinkFilter Type="GitHub Commit" />  

Po zaktualizowaniu sekcja powinna być wyświetlana w następujący sposób.

<Group Label="Development">  
   <Control Type="LinksControl" Name="Development">  
      <LinksControlOptions ViewMode="Dynamic" ZeroDataExperience="Development" ShowCallToAction="true">  
         <ListViewOptions GroupLinks="false">   
         </ListViewOptions>  
         <LinkFilters>  
             <ExternalLinkFilter Type="Build" />  
             <ExternalLinkFilter Type="Integrated in build" />  
             <ExternalLinkFilter Type="Pull Request" />  
             <ExternalLinkFilter Type="Branch" />  
             <ExternalLinkFilter Type="Fixed in Commit" />  
             <ExternalLinkFilter Type="Fixed in Changeset" />  
             <ExternalLinkFilter Type="Source Code File" />  
             <ExternalLinkFilter Type="Found in build" />  
             <ExternalLinkFilter Type="GitHub Pull Request" />  
             <ExternalLinkFilter Type="GitHub Commit" />  
         </LinkFilters>  
      </LinksControlOptions>  
   </Control>  
</Group>  

Następne kroki