Azure Boards를 GitHub로 커넥트(클라우드)

Azure DevOps Services

소프트웨어 개발 및 Azure Boards 프로젝트에 GitHub.com 리포지토리를 사용하여 작업을 계획하고 추적합니다. GitHub 커밋 및 끌어오기 요청이 Azure Boards의 작업 항목에 연결되도록 프로젝트 및 리포지토리를 커넥트.

참고 항목

Azure Boards 및 Azure DevOps Services는 GitHub.com과 GitHub Enterprise 서버 리포지토리와의 통합을 지원합니다. 온-프레미스 Azure DevOps Server에서 연결하려면 Azure DevOps Server에서 GitHub Enterprise Server로 커넥트 참조하세요.

필수 조건

  • Azure Boards 또는 Azure DevOps 프로젝트가 있어야 합니다. 아직 프로젝트가 없는 경우 프로젝트를 만듭니다.
  • Project 관리istrators 그룹의 구성원이어야 합니다. 프로젝트를 만든 경우 사용 권한이 있습니다.
  • 연결할 GitHub 리포지토리의 관리자 또는 소유자여야 합니다. 해당 리포지토리의 관리자인 경우 여러 GitHub 리포지토리에 연결할 수 있습니다.

인증 옵션

다음 인증 옵션은 연결하려는 GitHub 플랫폼을 기반으로 지원됩니다.

GitHub.com

GitHub Enterprise Server

참고 항목

Github를 PAT와 연결하도록 선택한 경우 GitHub 계정에서 PAT에 대한 SSO(Single Sign-On)를 구성해야 합니다. SAML(Security Assertion Markup Language) SSO 인증이 구성된 조직의 리포지토리 목록을 가져올 수 있어야 합니다.

Azure Boards를 GitHub 리포지토리에 커넥트.

  1. Azure DevOps 프로젝트에 로그인합니다.

  2. 프로젝트 설정>GitHub 연결을 선택합니다.

    Screenshot of open Project Settings>GitHub connections.

  3. 프로젝트에서 처음으로 연결한 경우 GitHub 계정 자격 증명을 사용하도록 GitHub 계정 커넥트 선택합니다.

    Screenshot of first time connecting with GitHub credentials.

    그렇지 않은 경우 새 연결을 선택하고 새 커넥트 대화 상자에서 인증 방법을 선택합니다.

    GitHub 계정을 사용하여 연결하는 경우 GitHub 계정 자격 증명을 사용하여 인증합니다. PAT를 사용하려면 PAT를 사용하여 GitHub 연결 추가를 참조하세요. GitHub Enterprise Server에 연결하려면 GitHub에서 Azure DevOps를 OAuth 앱 등록을 참조하세요.

GitHub 자격 증명을 사용하여 GitHub 연결 추가

최대 500개의 GitHub 리포지토리를 Azure Boards 프로젝트에 연결할 수 있습니다.

  1. Azure Boards에서 GitHub에 처음 연결하는 경우 GitHub 자격 증명을 사용하여 로그인하라는 메시지가 표시됩니다. 리포지토리 관리자인 계정을 선택합니다.

  2. 연결하려는 GitHub 계정 또는 조직을 선택합니다. 사용자가 소유하거나 관리자인 조직만 나열됩니다.

    조직의 모든 리포지토리가 이미 Azure Boards에 연결된 경우 다음 메시지가 표시됩니다.

    Screenshot of message where no more repositories exist to connect.

  3. GitHub 자격 증명을 입력합니다. 2단계 인증을 사용하도록 설정한 경우 GitHub에서 보낸 인증 코드를 입력하고 확인을 선택합니다. 그렇지 않으면 시스템은 GitHub 계정이 이전에 Azure DevOps Services 계정과 연결되었으므로 GitHub 조직을 자동으로 인식합니다.

리포지토리 선택

인증되면 연결하려는 리포지토리를 선택할 수 있습니다.

  1. GitHub 리포지토리 추가 대화 상자는 선택한 조직의 관리자인 모든 GitHub.com 리포지토리를 자동으로 표시하고 선택합니다. 통합에 참여하지 않으려는 리포지토리의 선택을 취소합니다.

    Screenshot showing GitHub repos.

    단일 Azure DevOps 조직에 정의된 프로젝트에만 GitHub 리포지토리를 연결하는 것이 좋습니다. 두 개 이상의 Azure DevOps 조직에 정의된 프로젝트에 동일한 GitHub 리포지토리를 연결하면 예기치 않은 AB# 멘션 연결이 발생할 수 있습니다. 자세한 내용은 GitHub 및 Azure Boards 통합 문제 해결을 참조하세요.

    모든 리포지토리가 현재 또는 다른 조직에 이미 연결되어 있으면 다음 메시지가 표시됩니다.

    Screenshot of message where no more repositories exist to connect.

  2. 완료되면 저장을 선택합니다.

연결 확인

  1. 표시되는 GitHub 페이지를 검토한 다음 승인, 설치 및 권한을 선택합니다.

    Screenshot showing confirming GitHub repositories.

  2. 확인할 GitHub 암호를 제공합니다.

  3. 완료되면 선택한 리포지토리가 나열된 새 연결이 표시됩니다.

Screenshot of list of connected repositories.

구성을 변경하거나 GitHub용 Azure Boards 앱을 관리하려면 Azure Boards에 대한 리포지토리 액세스 변경을 참조 하세요.

PAT를 사용하여 GitHub 연결 추가

GitHub 계정 자격 증명을 사용하여 GitHub 리포지토리에 연결하는 것이 좋습니다. 그러나 PAT를 사용해야 하는 경우 다음 절차에 따라 이 작업을 수행합니다.

GitHub PAT를 만들 때 다음 범위를 포함해야 합니다. repo, read:user, user:email, admin:repo_hook

  1. 개인용 액세스 토큰을 선택합니다.

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

    GitHub PAT를 만들려면 GitHub 개발자 설정 > 개인용 액세스 토큰으로 이동합니다.

  2. PAT를 입력하고 커넥트 선택합니다.

    Screenshot showing entered PAT.

  3. 이 문서의 앞부분에 있는 리포지토리 선택에서 설명한 절차에 따라 프로젝트에 연결하려는 리포지 토리를 선택합니다.

  4. Azure Boards에서 GitHub 계정 또는 조직에 처음으로 연결하는 경우 GitHub용 Azure Boards 앱도 설치해야 합니다. 이 문서의 앞부분에서 연결을 확인합니다.

GitHub에서 Azure DevOps를 OAuth 앱 등록

OAuth를 사용하여 Azure DevOps를 GitHub Enterprise Server에 연결하려는 경우 먼저 애플리케이션을 OAuth 앱 등록해야 합니다. 자세한 내용은 OAuth 앱 만들기를 참조하세요.

Azure DevOps Services 등록

  1. GitHub Enterprise 서버에 대한 웹 포털에 로그인합니다.

    Screenshot of sign in for GitHub Enterprise server.

  2. 설정>Developer 설정>Oauth Apps>새 OAuth 앱 엽니다.

    Screenshot showing sequence for New OAuth App.

  3. 애플리케이션을 등록하기 위한 정보를 입력합니다.

    홈페이지 URL경우 조직의 조직 URL지정합니다.
    권한 부여 콜백 URL경우 다음 패턴을 사용하여 URL을 생성합니다.

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

    예시:

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

    Screenshot showing app to register.

  4. 애플리케이션 등록을 선택합니다.

  5. 등록된 OAuth 애플리케이션에 대한 클라이언트 ID클라이언트 암호가 표시됩니다.

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

Azure DevOps Services에 OAuth 구성 등록

  1. Azure DevOps Services에 대한 웹 포털에 로그인합니다.

  2. 조직에 GitHub Enterprise Oauth 구성을 추가합니다.

  3. 조직 설정에서 Oauth 구성 Oauth 구성> 추가를 선택합니다.

    Screenshot of Open Organization Settings, OAuth configurations.

  4. 정보를 입력한 다음 만들기를 선택합니다.

    OAuth configurations dialog.

Azure DevOps Services를 GitHub Enterprise Server에 커넥트

Important

Azure DevOps Services를 GitHub Enterprise Server에 연결하려면 인터넷에서 GitHub Enterprise Server에 충분히 액세스할 수 있어야 합니다. Azure DNS가 GitHub Enterprise Server 이름을 확인할 수 있고 방화벽에서 Azure Data Center IP 주소에서 액세스할 수 있는지 확인합니다. IP 주소 범위를 확인하려면 Microsoft Azure Data Center IP 범위를 참조 하세요. 연결 문제가 있을 때 발생하는 일반적인 오류 메시지는 다음과 같습니다.

원격 이름을 확인할 수 없습니다. 'github-enterprise-server.contoso.com'

이 오류가 발생하면 서버에 액세스할 수 있는지 검사. 자세한 내용은 Azure DNS FAQ를 참조하세요.

  1. 처음 연결하려면 프로젝트 설정>GitHub 연결>GitHub Enterprise Server를 선택합니다.

    First connection, choose GitHub Enterprise Server.

    또는 새 GitHub 연결 대화 상자에서 GitHub Enterprise Server를 선택합니다.

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

  2. 인증 방법을 선택합니다.

    Screenshot showing authentication method dialog.

    OAuth를 사용하여 커넥트

    Azure DevOps Services에서 OAuth 구성 등록의 4단계에서 설정한 구성을 선택한 다음, 커넥트 선택합니다.

    Screenshot of New GitHub Enterprise connection, OAuth connection dialog.

    개인용 액세스 토큰을 사용하여 커넥트

    GitHub Enterprise 서버의 URL과 해당 서버에서 인식한 개인용 액세스 토큰 자격 증명을 입력합니다. 그런 다음 커넥트 선택합니다.

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

    사용자 이름 및 암호를 사용하여 커넥트

    GitHub Enterprise 서버의 URL과 해당 서버에서 인식한 관리자 계정 자격 증명을 입력한 다음, 커넥트 선택합니다.

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

  3. 대화 상자에는 GitHub 관리 권한이 있는 모든 리포지토리가 나열됩니다. MineAll 사이를 전환하여 다른 사용자가 표시되는지 확인한 다음 추가하려는 항목을 검사 수 있습니다. 완료되면 저장을 선택합니다.

    Screenshot of repositories listed.

    하나의 GitHub 조직에서 정의된 리포지토리에만 연결할 수 있습니다. 프로젝트를 다른 GitHub 조직에 정의된 다른 리포지토리에 연결하려면 다른 연결을 추가해야 합니다.

  4. Azure Boards에서 GitHub 계정 또는 조직에 처음으로 연결하는 경우 GitHub용 Azure Boards 앱도 설치합니다. 이 문서의 앞부분에서 연결을 확인합니다.

연결 문제 해결

Azure Boards-GitHub 통합은 연결을 지원하기 위해 다양한 인증 프로토콜을 사용합니다. 사용자의 권한 범위 또는 인증 자격 증명을 변경하면 Azure Boards에 연결된 GitHub 리포지토리가 해지될 수 있습니다.

GitHub용 Azure Boards 앱이 지원하는 통합에 대한 개요는 Azure Boards-GitHub 통합을 참조하세요.

지원되는 인증 옵션

다음 인증 옵션은 연결하려는 GitHub 플랫폼을 기반으로 지원됩니다.

플랫폼

GitHub.com

GitHub Enterprise Server

Azure DevOps Services

  • 사용자 계정 GitHub.com
  • PAT(개인용 액세스 토큰)
  • OAuth
  • PAT
  • 사용자 이름 및 암호

Azure DevOps Server 2020

해당 없음

  • PAT
  • 사용자 이름 및 암호

Azure DevOps Server 2019

해당 없음

  • OAuth
  • PAT
  • 사용자 이름 및 암호

참고 항목

GitHub용 Azure Boards 앱을 통해 Azure Boards 및 Azure DevOps Services는 GitHub.com과 GitHub Enterprise 서버 리포지토리와 통합을 지원합니다. Azure DevOps Servers 2019 이상 버전은 GitHub Enterprise Server 리포지토리와의 통합만 지원합니다. 다른 Git 리포지토리와의 통합은 지원되지 않습니다.

Azure Boards 조직 액세스 권한 부여

Azure Boards와 GitHub 간의 통합이 예상대로 작동하지 않는 경우 조직 액세스 권한을 부여했는지 확인합니다.

  1. GitHub 웹 포털에서 프로필 메뉴에서 설정 엽니다.
    Screenshot of open profile, choose Settings.

  2. 통합>권한 있는 OAuth 앱 Azure Boards에서 애플리케이션>선택합니다.

  3. 조직 액세스에서 나타날 수 있는 문제를 해결합니다. 권한 부여를 선택하여 액세스 요청이 보류 중인 것으로 표시되는 모든 조직에 대한 액세스 권한을 부여합니다.

    Screenshot of Organization access with organizations without access.

액세스 문제 해결

GitHub에 대한 Azure Boards 연결에 더 이상 액세스할 수 없는 경우 red-X가 있는 사용자 인터페이스에 경고 상태 표시됩니다. 경고 위로 마우스를 가져가면 자격 증명이 더 이상 유효하지 않음을 나타냅니다. 문제를 해결하려면 연결을 제거하고 새 연결을 다시 만듭니다.

Screenshot of failed connection.

이 문제를 해결하려면 다음 항목을 고려하세요.

  • 연결에서 OAuth를 사용하는 경우:

    • Azure Boards 애플리케이션은 리포지토리 중 하나에 대한 액세스가 거부되었습니다.

    • GitHub를 사용할 수 없거나 연결할 수 없습니다. 이러한 사용 불가는 서비스 중단 또는 온-프레미스 인프라/네트워크 문제로 인해 발생할 수 있습니다. 다음 링크에서 서비스 상태 검사 수 있습니다.

      GitHub 리포지토리에 대한 연결을 삭제하고 다시 만듭니다. 이 연결을 다시 만들면 GitHub에서 Azure Boards를 다시 인증하라는 메시지가 표시됩니다.

  • 연결에서 PAT를 사용하는 경우:

    • PAT가 해지되었거나 필요한 권한 범위가 변경되어 충분하지 않을 수 있습니다.

    • 사용자가 GitHub 리포지토리에 대한 관리자 권한을 잃었을 수 있습니다.

      PAT를 다시 만들고 토큰 범위에 필요한 권한이 포함되어 있는지 확인합니다. repo, read:user, user:email, admin:repo_hook

끊어진 GitHub Enterprise Server 연결 해결

기존 GitHub Enterprise Server 연결을 사용하여 Azure DevOps Server에서 Azure DevOps Services로 마이그레이션한 경우 기존 연결이 예상대로 작동하지 않습니다. GitHub 내의 작업 항목 멘션 지연되거나 Azure DevOps Services에 표시되지 않을 수 있습니다. 이 문제는 GitHub와 연결된 콜백 URL이 더 이상 유효하지 않으므로 발생합니다.

다음 해결 방법을 고려합니다.

  • 연결을 제거하고 다시 만듭니다. GitHub Enterprise Server 리포지토리에 대한 연결을 제거하고 다시 만듭니다. Azure Boards 설명서에서 커넥트 제공된 단계의 순서를 따릅니다.

  • 웹후크 URL 수정: GitHub의 리포지토리 설정 페이지로 이동하고 웹후크 URL을 편집하여 마이그레이션된 Azure DevOps Services 조직 URL을 가리킵니다. https://dev.azure.com/{OrganizationName}/_apis/work/events?api-version=5.2-preview

여러 Azure DevOps 조직에 커넥트

GitHub 리포지토리를 둘 이상의 Azure DevOps 조직(예: dev.azure.com/Contoso 및 dev.azure.com/Fabrikam)에 정의된 두 개 이상의 프로젝트에 연결하는 경우 AB# 멘션 사용하여 작업 항목에 연결할 때 예기치 않은 결과가 발생할 수 있습니다. 이 문제는 작업 항목 ID가 Azure DevOps 조직에서 고유하지 않기 때문에 발생하므로 AB#12 는 Contoso 또는 Fabrikam 조직의 작업 항목을 참조할 수 있습니다. 따라서 작업 항목이 커밋 메시지 또는 끌어오기 요청에 멘션 경우 두 조직 모두 일치하는 ID가 있는 작업 항목에 대한 링크를 만들려고 시도합니다(있는 경우).

일반적으로 사용자는 AB# 멘션 프로젝트 중 하나의 단일 작업 항목에 연결하려고 합니다. 그러나 동일한 ID의 작업 항목이 두 계정에 모두 있는 경우 두 작업 항목 모두에 대한 링크가 생성되어 혼동을 일으킬 수 있습니다.

현재는 이 문제를 해결할 방법이 없으므로 단일 GitHub 리포지토리를 단일 Azure DevOps 조직에만 연결하는 것이 좋습니다.

참고 항목

GitHub용 Azure Boards 앱을 사용하여 연결하면 앱에서 서로 다른 두 조직에 연결할 수 없게 됩니다. GitHub 리포지토리가 잘못된 Azure DevOps 조직에 잘못 연결된 경우 해당 조직의 소유자에게 문의하여 연결을 제거해야 리포지토리를 올바른 Azure DevOps 조직에 추가할 수 있습니다.

선택한 작업 항목 유형에 대한 XML 정의 업데이트

조직에서 호스트된 XML 또는 온-프레미스 XML 프로세스 모델을 사용하여 작업 추적 환경을 사용자 지정하고 작업 항목 양식의 개발 섹션에서 GitHub 링크 형식에 연결하고 보려는 경우 작업 항목 형식에 대한 XML 정의를 업데이트해야 합니다.

예를 들어 사용자 스토리와 버그를 GitHub 커밋에 연결하고 개발 섹션에서 요청을 끌어오려면 사용자 스토리 및 버그에 대한 XML 정의를 업데이트해야 합니다.

호스트된 XML 프로세스 모델에 제공된 작업 시퀀스에 따라 XML 정의를 업데이트합니다. 각 작업 항목 유형에 대해 섹션을 Group Label="Development" 찾고 다음 코드 구문에 다음 두 줄을 추가하여 외부 링크 형식 인 GitHub CommitGitHub 끌어오기 요청을 지원합니다.

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

업데이트되면 섹션이 다음과 같이 표시됩니다.

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

다음 단계