Połączenie usługi Azure Boards do usługi GitHub (w chmurze)

Azure DevOps Services

Użyj repozytoriów GitHub.com do tworzenia oprogramowania i projektu usługi Azure Boards, aby zaplanować i śledzić swoją pracę. Połączenie projektu i repozytorium, aby zatwierdzenia i żądania ściągnięcia usługi GitHub zostały połączone z elementami roboczymi w usłudze Azure Boards.

Uwaga

Usługi Azure Boards i Azure DevOps Services obsługują integrację z repozytoriami GitHub.com i GitHub Enterprise Server. Jeśli chcesz nawiązać połączenie z lokalnego serwera Azure DevOps Server, zobacz Połączenie Azure DevOps Server z usługą GitHub Enterprise Server.

Wymagania wstępne

  • Musisz mieć projekt usługi Azure Boards lub Azure DevOps. Jeśli nie masz jeszcze projektu, utwórz go.
  • Musisz być członkiem grupy project Administracja istrators. Jeśli projekt został utworzony, masz uprawnienia.
  • Aby nawiązać połączenie, musisz być administratorem lub właścicielem repozytorium GitHub. Możesz nawiązać połączenie z wieloma repozytoriami GitHub, o ile jesteś administratorem tych repozytoriów.

Opcje uwierzytelniania

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

GitHub.com

GitHub Enterprise Server

Uwaga

Jeśli zdecydujesz się nawiązać połączenie z usługą GitHub przy użyciu tokenu PAT, upewnij się, że skonfigurowano logowanie jednokrotne dla tokenu DOSTĘPU na koncie usługi GitHub. Jest to konieczne, aby można było uzyskać listę repozytoriów organizacji ze skonfigurowanym uwierzytelnianiem jednokrotnym usługi Security Assertion Markup Language (SAML).

Połączenie usługi Azure Boards do repozytorium GitHub.

  1. Zaloguj się do projektu usługi Azure DevOps.

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

    Screenshot of open Project Settings>GitHub connections.

  3. Jeśli po raz pierwszy utworzysz połączenie z projektu, wybierz pozycję Połączenie konto usługi GitHub, aby użyć poświadczeń konta usługi GitHub.

    Screenshot of first time connecting with GitHub credentials.

    W przeciwnym razie wybierz pozycję Nowe połączenie i wybierz metodę uwierzytelniania w oknie dialogowym Nowa Połączenie ion.

    Podczas nawiązywania połączenia przy użyciu konta usługi GitHub użyj poświadczeń konta usługi GitHub do uwierzytelniania. Aby użyć pat, zobacz Dodawanie połączenia usługi GitHub przy użyciu tokenu PAT. Aby nawiązać połączenie z serwerem GitHub Enterprise Server, zobacz Rejestrowanie usługi Azure DevOps w usłudze GitHub jako aplikacji OAuth.

Dodawanie połączenia usługi GitHub z poświadczeniami usługi GitHub

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

  1. Jeśli po raz pierwszy nawiązujesz połączenie z usługą GitHub z usługi Azure Boards, zostanie wyświetlony monit o zalogowanie się przy użyciu poświadczeń usługi GitHub. Wybierz konto, dla którego jesteś administratorem repozytorium.

  2. Wybierz konto usługi GitHub lub organizację, z którą chcesz nawiązać połączenie. Wyświetlane są tylko te organizacje, których jesteś właścicielem lub administratorem.

    Jeśli wszystkie repozytoria organizacji zostały już połączone z usługą Azure Boards, zostanie wyświetlony następujący komunikat.

    Screenshot of message where no more repositories exist to connect.

  3. Wprowadź poświadczenia usługi GitHub. Jeśli masz włączone uwierzytelnianie dwuskładnikowe, wprowadź kod uwierzytelniania wysłany przez usługę GitHub i wybierz pozycję Weryfikuj. W przeciwnym razie system automatycznie rozpoznaje organizację usługi GitHub, ponieważ konto usługi GitHub zostało wcześniej skojarzone z kontem usługi Azure DevOps Services.

Wybieranie repozytoriów

Po uwierzytelnieniu możesz wybrać repozytoria, z którymi chcesz się połączyć.

  1. Zostanie automatycznie wyświetlone okno dialogowe Dodawanie repozytoriów GitHub i wybierze wszystkie GitHub.com repozytoria, dla których jesteś administratorem wybranej organizacji. Usuń zaznaczenie wszystkich repozytoriów, których nie chcesz uczestniczyć w integracji.

    Screenshot showing GitHub repos.

    Napiwek

    Zalecamy połączenie repozytorium GitHub tylko z projektami zdefiniowanymi w jednej organizacji usługi Azure DevOps. Połączenie tego samego repozytorium GitHub do projektów zdefiniowanych w co najmniej dwóch organizacjach usługi Azure DevOps może prowadzić do nieoczekiwanego Łączenie wzmianki w języku AB#. Aby uzyskać więcej informacji, zobacz Rozwiązywanie problemów z integracją z usługą GitHub i usługą Azure Boards.

    Jeśli wszystkie repozytoria są już połączone z bieżącą lub inną organizacją, zostanie wyświetlony następujący komunikat.

    Screenshot of message where no more repositories exist to connect.

  2. Po zakończeniu wybierz opcję Zapisz.

Potwierdzanie połączenia

  1. Przejrzyj wyświetloną stronę usługi GitHub, a następnie wybierz pozycję Zatwierdź, Zainstaluj i Autoryzuj.

    Screenshot showing confirming GitHub repositories.

  2. Podaj hasło usługi GitHub, aby potwierdzić.

  3. Po zakończeniu powinno zostać wyświetlone nowe połączenie z wybranymi repozytoriami.

Screenshot of list of connected repositories.

Aby zmienić konfigurację lub zarządzać aplikacją usługi Azure Boards dla usługi GitHub, zobacz Zmienianie dostępu repozytorium do usługi Azure Boards.

Dodawanie połączenia usługi GitHub przy użyciu interfejsu PAT

Zalecamy użycie poświadczeń konta usługi GitHub w celu nawiązania połączenia z repozytorium GitHub. Jeśli jednak musisz użyć tokenu dostępu, wykonaj te procedury.

Napiwek

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

  1. Wybierz pozycję Osobisty token dostępu.

    Screenshot of New GitHub connection dialog, choosing Personal Access Token.

    Aby utworzyć identyfikator PAT usługi GitHub, przejdź do pozycji GitHub Developer Ustawienia > Osobiste tokeny dostępu.

  2. Wprowadź pat i wybierz pozycję Połączenie.

    Screenshot showing entered PAT.

  3. Wybierz repozytoria, które chcesz połączyć z projektem, postępując zgodnie z procedurami opisanymi we wcześniejszej sekcji Wybieranie repozytoriów w tym artykule.

  4. Jeśli po raz pierwszy łączysz się z kontem usługi GitHub lub organizacją z usługi Azure Boards, musisz również zainstalować aplikację Usługi Azure Boards dla usługi GitHub. Potwierdź połączenie wcześniej w tym artykule.

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

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

Rejestrowanie usług Azure DevOps Services

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

    Screenshot of sign in for GitHub Enterprise server.

  2. Otwórz Ustawienia> Ustawienia>Oauthoper>— nowa aplikacja OAuth.

    Screenshot showing sequence for New OAuth App.

  3. Wprowadź informacje, aby zarejestrować aplikację.

    W polu Adres URL strony głównej określ adres URL organizacji organizacji.
    W przypadku adresu URL wywołania zwrotnego autoryzacji użyj następującego wzorca, aby utworzyć adres URL.

    {Azure DevOps Services Organization URL}/_admin/oauth2/callback

    Na przykład:

    https://dev.azure.com/fabrikam/_admin/oauth2/callback

    Screenshot showing app to register.

  4. Wybierz pozycję Zarejestruj aplikację.

  5. Zostanie wyświetlony identyfikator klienta i klucz tajny klienta dla zarejestrowanej aplikacji OAuth.

    Screenshot of Client ID and Client Secret for the registered OAuth application.

Rejestrowanie konfiguracji protokołu OAuth w usłudze Azure DevOps Services

  1. Zaloguj się do portalu internetowego dla usług Azure DevOps Services.

  2. Dodaj konfigurację Oauth usługi GitHub Enterprise do swojej organizacji.

  3. W obszarze Ustawienia organizacji wybierz pozycję Konfiguracje Oauth Dodaj konfigurację> protokołu Oauth.

    Screenshot of Open Organization Settings, OAuth configurations.

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

    OAuth configurations dialog.

Połączenie usługi Azure DevOps Services do usługi GitHub Enterprise Server

Ważne

Aby połączyć usługi Azure DevOps Services z serwerem GitHub Enterprise Server, serwer GitHub Enterprise Server musi być wystarczająco dostępny z Internetu. Upewnij się, że usługa Azure DNS może rozpoznać nazwę serwera GitHub Enterprise, a zapora zezwala na dostęp z adresów IP centrum danych Azure. Aby określić zakres adresów IP, zobacz Zakresy adresów IP centrum danych platformy Microsoft Azure. Typowy komunikat o błędzie napotkany, gdy występują problemy z łącznością:

Nie można rozpoznać nazwy zdalnej: "github-enterprise-server.contoso.com"

Jeśli wystąpi ten błąd, sprawdź, czy serwer jest dostępny. Aby uzyskać więcej informacji, zobacz Często zadawane pytania dotyczące usługi Azure DNS.

  1. Wybierz pozycję Ustawienia>projektu Połączenia>GitHub GitHub Enterprise Server dla połączenia po raz pierwszy.

    First connection, choose GitHub Enterprise Server.

    Ewentualnie w oknie dialogowym Nowe połączenie z usługą GitHub wybierz pozycję GitHub Enterprise Server.

    Screenshot of New GitHub connection dialog, choose GitHub Enterprise Server.

  2. Wybierz metodę uwierzytelniania.

    Screenshot showing authentication method dialog.

    Połączenie z uwierzytelnianiem OAuth

    Wybierz konfigurację skonfigurowaną w kroku 4 sekcji Rejestrowanie konfiguracji OAuth w usługach Azure DevOps Services, a następnie wybierz pozycję Połączenie.

    Screenshot of New GitHub Enterprise connection, OAuth connection dialog.

    Połączenie z osobistym tokenem dostępu

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

    Screenshot of New GitHub Enterprise connection, Personal access token connection dialog.

    Połączenie z nazwą użytkownika i hasłem

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

    Screenshot of New GitHub Enterprise connection screen, User Name connection dialog.

  3. 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ć. Wybierz Zapisz, gdy skończysz.

    Screenshot of repositories listed.

    Napiwek

    Połączenie z repozytoriami zdefiniowanymi w jednej organizacji usługi GitHub można nawiązać tylko z repozytoriami. Aby połączyć projekt z innymi repozytoriami zdefiniowanymi w innej organizacji usługi GitHub, musisz dodać kolejne połączenie.

  4. Jeśli po raz pierwszy łączysz się z kontem usługi GitHub lub organizacją z usługi Azure Boards, zainstaluj również aplikację Usługi Azure Boards dla usługi GitHub. Potwierdź połączenie wcześniej w tym artykule.

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 obsługują integrację z repozytoriami GitHub.com i GitHub Enterprise Server. Serwery Azure DevOps Server 2019 i nowsze obsługują integrację tylko z repozytoriami GitHub Enterprise Server. Integracja z innymi repozytoriami Git nie jest obsługiwana.

Udzielanie dostępu organizacji w usłudze Azure Boards

Jeśli integracja między usługą Azure Boards i usługą GitHub nie działa zgodnie z oczekiwaniami, sprawdź, czy udzielono ci dostępu do organizacji.

  1. W portalu internetowym usługi GitHub otwórz Ustawienia z menu profilu.
    Screenshot of open profile, choose Settings.

  2. Wybierz pozycję Aplikacje w obszarze Integracje autoryzowane aplikacje>OAuth w usłudze> Azure Boards.

  3. W obszarze Dostęp do organizacji rozwiąż wszelkie problemy, które mogą się pojawić. Wybierz pozycję Udziel , aby udzielić dostępu do wszystkich organizacji, które są wyświetlane jako oczekujące na żądanie dostępu.

    Screenshot of Organization access with organizations without access.

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.

Screenshot of failed connection.

Aby rozwiązać ten problem, rozważ następujące elementy:

  • 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:

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

    • Użytkownik mógł utracić uprawnienia administratora 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.

Rozwiązywanie problemów z przerwanym połączeniem z serwerem GitHub Enterprise Server

Jeśli przeprowadzono migrację z usługi Azure DevOps Server do usług Azure DevOps Services przy użyciu istniejącego połączenia z serwerem GitHub Enterprise Server, istniejące połączenie nie będzie działać zgodnie z oczekiwaniami. Wzmianki o elementach roboczych w usłudze GitHub mogą być opóźnione lub nigdy nie są wyświetlane w usługach Azure DevOps Services. Ten problem występuje, ponieważ adres URL wywołania zwrotnego skojarzony z usługą GitHub nie jest już prawidłowy.

Rozważ następujące rozwiązania:

  • Usuń i ponownie utwórz połączenie: usuń i ponownie utwórz połączenie z repozytorium GitHub Enterprise Server. Postępuj zgodnie z sekwencją kroków podanych w Połączenie z dokumentacji usługi Azure Boards.

  • Napraw adres URL elementu webhook: przejdź do strony ustawień repozytorium usługi GitHub i zmodyfikuj adres URL elementu webhook, aby wskazać zmigrowany adres URL organizacji usługi Azure DevOps Services: https://dev.azure.com/{OrganizationName}/_apis/work/events?api-version=5.2-preview

Połączenie do wielu organizacji usługi Azure DevOps

Jeśli połączysz repozytorium GitHub z co najmniej dwoma projektami zdefiniowanymi w więcej niż jednej organizacji usługi Azure DevOps, takich jak dev.azure.com/Contoso i dev.azure.com/Fabrikam, podczas używania wzmianki AB# do łączenia z elementami roboczymi mogą zostać wyświetlone nieoczekiwane wyniki. Ten problem występuje, ponieważ identyfikatory elementów roboczych nie są unikatowe w organizacjach usługi Azure DevOps, dlatego ab#12 może odwoływać się do elementu roboczego w organizacji Contoso lub Fabrikam. Tak więc, gdy element roboczy jest wymieniony w komunikacie zatwierdzenia lub żądaniu ściągnięcia, obie organizacje próbują utworzyć link do elementu roboczego z pasującym identyfikatorem (jeśli istnieje).

Ogólnie rzecz biorąc, użytkownik zamierza wspomnieć AB# o łączeniu do jednego elementu roboczego w jednym z projektów. Jeśli jednak element roboczy tego samego identyfikatora istnieje na obu kontach, linki zostaną utworzone dla obu elementów roboczych, co prawdopodobnie powoduje zamieszanie.

Obecnie nie ma możliwości obejścia tego problemu, dlatego zalecamy połączenie pojedynczego repozytorium GitHub tylko z jedną organizacją usługi Azure DevOps.

Uwaga

Po nawiązaniu połączenia przy użyciu aplikacji Azure Boards dla usługi GitHub aplikacja uniemożliwia nawiązywanie połączenia z dwiema różnymi organizacjami. Jeśli repozytorium GitHub jest niepoprawnie połączone z niewłaściwą organizacją usługi Azure DevOps, musisz skontaktować się z właścicielem tej organizacji, aby usunąć połączenie, zanim będzie można dodać repozytorium do właściwej organizacji usługi Azure DevOps.

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

Jeśli twoja organizacja używa hostowanego modelu procesów XML lub lokalnego kodu XML w celu dostosowania środowiska śledzenia pracy i chcesz połączyć się z typami linków usługi GitHub z sekcji Programowanie w formularzach elementów roboczych, musisz zaktualizować definicje XML typów elementów roboczych.

Jeśli na przykład chcesz połączyć historie użytkowników i usterki z zatwierdzeniami i żądaniami ściągnięcia usługi GitHub z sekcji Programowanie , musisz zaktualizować definicje XML dla scenariuszy użytkowników i usterek.

Postępuj zgodnie z sekwencją zadań udostępnionych w modelu procesów hostowanego XML, aby zaktualizować definicje XML. Dla każdego typu elementu roboczego znajdź sekcję Group Label="Development" i dodaj następujące dwa wiersze w następującej składni kodu, aby obsługiwać typy linków zewnętrznych: Zatwierdzenie usługi GitHub i żądanie ściągnięcia w usłudze GitHub.

             <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