

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# GitHub 연결
<a name="connecting-to-cicd-pipelines-connecting-github"></a>

GitHub 통합을 통해 AWS DevOps Agent는 인시던트 조사 중에 코드 리포지토리에 액세스하고 배포 이벤트를 수신할 수 있습니다. 이 통합은 GitHub의 계정 수준 등록 후 특정 리포지토리를 개별 에이전트 스페이스에 연결하는 2단계 프로세스를 따릅니다.

AWS DevOps Agent는 GitHub.com(SaaS), 데이터 레지던시가 있는 GitHub Enterprise Cloud(`*.ghe.com`) 및 GitHub Enterprise Server(자체 호스팅) 인스턴스를 지원합니다.

## 사전 조건
<a name="prerequisites"></a>

GitHub를 연결하기 전에 다음이 있는지 확인합니다.
+  AWS DevOps 에이전트 관리자 콘솔에 대한 액세스
+ 관리자 권한이 있는 GitHub 사용자 계정 또는 조직
+ 계정 또는 조직에 GitHub 앱을 설치하기 위한 권한 부여

GitHub Enterprise Server의 경우 다음 사항도 필요합니다.
+ HTTPS를 통해 액세스할 수 있는 GitHub Enterprise Server 인스턴스(버전 3.x 이상)
+ GitHub Enterprise Server 인스턴스의 HTTPS URL(예: `https://github.example.com`)
+ (선택 사항) GitHub Enterprise Server 인스턴스에 공개적으로 액세스할 수 없는 경우의 프라이빗 연결

데이터 레지던시가 있는 GitHub Enterprise Cloud의 경우 다음 사항도 필요합니다.
+ 전용 `*.ghe.com` 하위 도메인에서 호스팅되는 데이터 레지던시가 활성화된 GitHub Enterprise Cloud 조직
+ GitHub Apps 생성 및 설치 권한을 포함한 조직 관리자 권한
+ 데이터 레지던시 인스턴스의 HTTPS URL(예: `https://octocorp.ghe.com`)

## GitHub 등록(계정 수준)
<a name="registering-github-account-level"></a>

GitHub는 AWS 계정 수준에서 등록되고 해당 계정의 모든 에이전트 스페이스 간에 공유됩니다. 각 등록은 하나의 GitHub 사용자, 하나의 조직 또는 하나의 GitHub Enterprise Server 인스턴스에 해당합니다.

### 1단계: 파이프라인 공급자로 이동
<a name="step-1-navigate-to-pipeline-providers"></a>

1.  AWS Management Console에 로그인

1.  AWS DevOps 에이전트 콘솔로 이동합니다.

1. **기능** 탭으로 이동

1. **파이프라인** 섹션에서 **추가**를 선택합니다.

1. 사용 가능한 공급자 목록에서 **GitHub**를 선택합니다.

GitHub가 아직 등록되지 않은 경우 먼저 등록하라는 메시지가 표시됩니다.

### 2단계: 연결 유형 선택
<a name="step-2-choose-connection-type"></a>

"GitHub 계정/조직 등록" 화면에서 사용자 또는 조직으로 연결할지 여부를 선택합니다.
+ **사용자** - 사용자 이름과 프로필이 있는 개인 GitHub 계정
+ **조직** - 여러 사람이 여러 프로젝트에서 한 번에 협업할 수 있는 공유 GitHub 계정입니다. **조직을** 선택하는 경우 GitHub 조직 이름을 입력합니다. 다음 단계에서 해당 조직에 앱을 승인하고 설치해야 하므로 이름은 GitHub 조직 이름과 정확히 일치해야 합니다.

**GitHub 앱에 대한 GitHub 앱 권한을** 선택합니다. GitHub 권한 수준은 GitHub 앱이 리포지토리에서 수행할 수 있는 작업을 결정합니다.
+ **읽기 및 쓰기**(기본값): GitHub 앱은 읽기 및 쓰기 권한을 모두 요청합니다. 이렇게 하면 모든 기능이 활성화됩니다. DevOps Agent는 인라인 풀 요청 설명을 게시하고, 수정 사항을 제안하고, 워크플로를 트리거할 수 있습니다.
+ **읽기 전용**: GitHub 앱은 읽기 권한만 요청합니다. DevOps Agent는 코드 및 풀 요청을 볼 수 있지만 설명을 게시하거나 수정 사항을 제안하거나 워크플로를 트리거할 수는 없습니다.

GitHub Enterprise Server 인스턴스에 연결하는 경우 ** GitHub Enterprise 사용을** 선택하고 인스턴스의 HTTPS URL(예: `https://github.example.com`)을 입력합니다.

GitHub Enterprise Server 인스턴스에 공개적으로 액세스할 수 없는 경우 선택적으로 인스턴스 AWS DevOps에 안전하게 연결할 수 있도록 프라이빗 연결을 구성할 수 있습니다. 자세한 내용은 [프라이빗 호스팅 도구에 연결](configuring-integrations-and-knowledge-connecting-to-privately-hosted-tools.md) 단원을 참조하십시오.

**참고**  
** URL에 `/api/v3` 또는 후행 경로를 포함하지 마십시오. 기본 URL만 입력합니다.

데이터 레지던시가 있는 GitHub Enterprise Cloud의 경우 ** GitHub Enterprise 사용을** 선택하고 데이터 레지던시 인스턴스의 HTTPS URL(예: `https://octocorp.ghe.com`)을 입력합니다.

### 3단계: GitHub 앱 설정
<a name="step-3-set-up-the-github-app"></a>

**제출**을 선택하여 앱 설정 프로세스를 시작합니다. 다음 단계는 데이터 레지던시를 사용하여 GitHub.com, GitHub Enterprise Server 또는 GitHub Enterprise Cloud에 연결할지 여부에 따라 달라집니다.

#### GitHub.com의 경우
<a name="for-githubcom"></a>

1. GitHub는 로그인 및 authorize AWS DevOps 에이전트로 리디렉션합니다.

1. 권한 부여 요청을 검토하고 authorization AWS DevOps 에이전트를 승인합니다.

1. 권한을 부여하면 AWS DevOps 에이전트가 등록을 완료합니다. 지정한 계정 또는 조직에 GitHub 앱이 아직 설치되지 않은 경우 설치 페이지로 계속 진행합니다(4단계 참조). 앱이 이미 설치된 경우 다시 설치하지 않고 등록이 완료됩니다.

1. 설치 후 AWS DevOps Agent는 연결된 리포지토리에서 배포 이벤트를 포함한 이벤트를 수신합니다.

**참고**  
** 등록 중에 지정한 것과 동일한 사용자 또는 조직에 앱을 승인하고 설치해야 합니다. 다른 계정 또는 조직에 권한을 부여하거나 설치하는 경우 등록이 실패하고 올바른 계정 또는 조직을 선택하여 프로세스를 다시 시작해야 합니다.

**참고**  
** AWS DevOps Agent는 각 권한 수준(읽기 및 쓰기 및 읽기 전용)에 대해 별도의 GitHub 앱을 사용하며 각 앱은 독립적으로 권한이 부여됩니다. GitHub는 설정 > 애플리케이션 > 승인된 GitHub 앱에서 취소할 때까지 권한 부여를 기억합니다. 이전에이 권한 수준에서 앱을 승인한 경우 GitHub는 권한 부여 화면을 건너뛸 수 있습니다. 권한 수준을 변경하면 GitHub는 해당 앱을 처음 승인하라는 메시지를 표시합니다.

#### 데이터 레지던시가 있는 GitHub Enterprise Server 및 GitHub Enterprise Cloud의 경우
<a name="for-github-enterprise-server-and-github-enterprise-cloud-with-data-residency"></a>

GitHub Enterprise Server와 데이터 레지던시가 있는 GitHub Enterprise Cloud는 모두 인스턴스에 새 GitHub 앱을 자동으로 설정하는 GitHub 앱 매니페스트 흐름을 사용합니다. 설정 중에 브라우저가 두 번 리디렉션됩니다. 한 번은 인스턴스로 리디렉션되고 다른 한 번은 AWS DevOps 에이전트로 리디렉션됩니다.

1. AWS DevOps Agent는 브라우저를 GitHub Enterprise 인스턴스의 ** GitHub 앱 생성** 페이지로 리디렉션합니다.

1. 앱 이름은 미리 채워져 있습니다. 필요한 경우 이름을 변경한 다음 ** GitHub 앱 생성을** 선택합니다.

1. After AWS DevOps Agent는 브라우저를 다시 리디렉션하고 매니페스트 코드를 앱 자격 증명으로 교환합니다.

### 4단계: 리포지토리 선택 및 설치 완료
<a name="step-4-select-repositories-and-complete-installation"></a>

GitHub 앱이 계정 또는 조직에 이미 설치되어 있는 경우이 단계를 건너뜁니다.

1. GitHub 앱의 **설치 및 권한 부여** 페이지가 나타납니다.

1. 앱이 액세스할 수 있도록 허용할 리포지토리를 선택합니다.
   + **모든 리포지토리** - 모든 현재 및 향후 리포지토리에 대한 액세스 권한 부여
   + **리포지토리만 선택** - 계정 또는 조직에서 특정 리포지토리를 선택합니다.

1. **설치 및 승인**을 선택합니다.

1.  AWS DevOps 에이전트 콘솔로 다시 리디렉션되며, 여기서 GitHub는 계정 수준에서 등록된 것으로 표시됩니다.

## 에이전트 스페이스에 리포지토리 연결
<a name="connecting-repositories-to-an-agent-space"></a>

계정 수준에서 GitHub를 등록한 후 특정 리포지토리를 개별 에이전트 스페이스에 연결할 수 있습니다.

1.  AWS DevOps 에이전트 콘솔에서 에이전트 스페이스를 선택합니다.

1. **기능** 탭으로 이동

1. **파이프라인** 섹션에서 **추가**를 선택합니다.

1. 사용 가능한 공급자 목록에서 **GitHub**를 선택합니다.

1. 사용하려는 리포지토리가 포함된 GitHub 등록을 선택합니다.

1. 이 에이전트 스페이스와 관련된 리포지토리의 하위 집합 선택

1. **추가**를 선택하여 연결을 완료합니다.

조직의 필요에 따라 서로 다른 리포지토리 세트를 서로 다른 에이전트 스페이스에 연결할 수 있습니다. 단일 에이전트 스페이스는 여러 등록의 리포지토리를 사용할 수 있습니다. 다른 등록에서 리포지토리를 추가하려면 다음 단계를 반복합니다.

## 코드 검토 및 자동 테스트 구성
<a name="configuring-code-review-and-automated-testing"></a>

GitHub 연결 단계에서 리포지토리를 선택하면 리포지토리가 **코드 검토 및 자동 테스트** 섹션에 자동으로 추가됩니다. 이 섹션에서는 [릴리스 준비 상태 코드 검토](release-management-release-readiness-code-review.md) 및 자동 테스트 기능을 자동으로 트리거하는 리포지토리를 구성합니다.

코드 검토 및 자동 테스트 구성에는 다음이 포함됩니다.
+ **기능** - 각 리포지토리에 대한 코드 검토 및 자동 테스트 기능을 선택합니다. 이 섹션에서는 두 가지 리포지토리별 설정을 제공합니다.
  + **변경 검토 자동 트리거** - 리포지토리에 대해 활성화된 경우 DevOps Agent는 풀 요청이 열리거나 업데이트될 [릴리스 준비 상태 코드 검토](release-management-release-readiness-code-review.md) 때마다를 자동으로 실행합니다. 검토 결과는 풀 요청에 인라인 주석으로 표시됩니다. 이는 연결된 모든 리포지토리에 대해 기본적으로 활성화됩니다.
  + **자동 확인 테스트** - 리포지토리에 대해 활성화된 경우 DevOps Agent는 코드 검토 중에 관리형 확인 환경에서 코드 변경 사항을 빌드, 실행 및 테스트합니다. 이를 통해 정적 분석 이상의 기능 검증이 가능합니다. 자세한 내용은 [자동 확인 테스트를](release-management-release-readiness-code-review.md) 참조하세요. 이는 연결된 모든 리포지토리에 대해 기본적으로 활성화됩니다.
+ **리포지토리 목록** - 연결 단계에서 선택한 모든 리포지토리를 표시합니다. 검색 필드를 사용하여 리포지토리를 이름으로 필터링합니다. 각 리포지토리에는 두 기능에 대한 독립적인 확인란이 있습니다.
+ **런타임 역할**(선택 사항) - DevOps 에이전트가 선택한 리포지토리에서 자동 기능을 실행하기 위해 수임하는 IAM 역할을 선택합니다. 이 역할은 프라이빗 패키지 레지스트리 및 아티팩트 스토리지 시스템과 같은 빌드 중에 필요한 내부 서비스에 액세스할 때 사용됩니다. 기본 에이전트 역할과 다른 역할을 사용하는 것이 좋습니다.

자동 검토를 구성하려면:

1. 리포지토리를 연결한 후 GitHub 통합 설정에서 **코드 검토 및 자동 테스트** 섹션으로 이동합니다.

1. 각 리포지토리에 대해 **자동 풀 요청 검토를 원하는지 여부에 따라 자동 트리거 변경** 검토 기능을 활성화하거나 비활성화합니다.

1. 각 리포지토리에 대해 관리형 **확인 환경에서 자동 확인 테스트를** 원하는[지 여부에 따라 자동 확인 테스트](release-management-release-readiness-code-review.md) 기능을 활성화하거나 비활성화합니다.

1. 선택적으로 선택한 리포지토리에서 자동 기능을 실행할 때 DevOps 에이전트가 수임할 **런타임 역할** 드롭다운에서 IAM 역할을 선택합니다.

1. **저장**을 선택하여 구성을 적용합니다.

구성되면 **자동 트리거 변경 검토**가 활성화된 리포지토리의 새 풀 요청은 릴리스 준비 상태 코드 검토를 자동으로 트리거합니다. **자동 확인 테스트**도 활성화된 경우 검토에는 확인 환경의 기능 검증이 포함됩니다. 코드 검토에 대한 자세한 내용은 섹션을 참조하세요[릴리스 준비 상태 코드 검토](release-management-release-readiness-code-review.md).

## GitHub 앱 이해
<a name="understanding-the-github-app"></a>

 AWS DevOps 에이전트 GitHub 앱:
+ 리포지토리에 대한 액세스 요청 - GitHub 앱 설치 중에 특정 권한을 검토할 수 있습니다.
+ 배포 이벤트 및 기타 리포지토리 이벤트를 수신합니다.
+ 코드 변경 사항을 운영 인시던트와 연관시킬 수 있는 Allow AWS DevOps Agent
+ GitHub 설정을 통해 언제든지 제거할 수 있습니다.

데이터 레지던시가 있는 GitHub Enterprise Server 및 GitHub Enterprise Cloud의 경우 AWS DevOps Agent는 등록 중에 인스턴스에 GitHub 앱을 자동으로 생성합니다. **설정 > 애플리케이션 > 설치된 GitHub 앱을 통해 앱의 리포지토리 액세스를 관리하거나 제거할 수 있습니다**. 앱 정의를 완전히 삭제하려면 **설정 > 개발자 설정 > GitHub 앱으로** 이동합니다.

## GitHub 앱 권한 업데이트
<a name="github-app-permission-updates"></a>

AWS DevOps Agent는 새로운 기능을 지원하기 위해 GitHub 앱을 설치한 후 권한 업데이트를 요청할 수 있습니다. 이 경우:

1. GitHub로부터 권한 업데이트 요청에 대한 알림을 받게 됩니다.

1. 업데이트 세부 정보를 검토하여 어떤 새 권한이 요청되고 있는지 이해합니다.

1. **새 권한 수락**을 선택하여 업데이트된 권한을 부여합니다.

서비스 또는 애플리케이션에서는 변경할 필요가 없습니다. 업데이트된 권한을 수락하면 GitHub에서 AWS DevOps 에이전트가 요청하는 다음 설치 액세스 토큰에 새 권한이 자동으로 포함됩니다.

**참고**  
** 권한 업데이트를 수락할 때까지 AWS DevOps 에이전트는 이전에 부여된 권한으로 계속 작동합니다. 업데이트된 권한에 의존하는 새 기능은 요청을 승인할 때까지 사용할 수 없습니다. 새 권한을 수락하지 않도록 선택하면 앱은 현재 권한을 유지합니다.

### 요청된 권한
<a name="requested-permissions"></a>

다음 표에서는 AWS DevOps 에이전트 GitHub 앱 요청의 각 권한과 필요한 이유를 설명합니다.

등록 중에 **읽기 전용**을 선택한 경우 GitHub 앱은 다음 표의 각 권한에 대해서만 읽기 수준 액세스를 요청합니다. 읽기 전용 권한을 사용하면 GitHub 앱이 **목적** 열에 나열된 쓰기 수준 작업을 수행할 수 없습니다.


| 권한 | 액세스 레벨 | 용도 | 
| --- | --- | --- | 
| 검사 | 읽기 및 쓰기 | 풀 요청에 대한 검사가 실행됨에 따라 릴리스 후 준비 코드 검토 결과가 표시되므로 검토 상태가 GitHub UI에 직접 표시될 수 있습니다. | 
| 워크플로 | 읽기 및 쓰기 | CI/CD 파이프라인에서 릴리스 테스트를 위해 워크플로 정의를 읽고 GitHub Actions 워크플로를 트리거합니다. | 
| 작업 | 읽기 및 쓰기 | 인시던트 조사 및 릴리스 테스트 중에 GitHub Actions 워크플로 실행 및 액세스 실행 로그를 모니터링합니다. | 
| 내용 | 읽기 및 쓰기 | 코드 검토 분석 및 종속성 매핑을 위해 리포지토리 소스 코드를 읽습니다. 쓰기 액세스를 통해 에이전트는 식별된 문제에 대한 수정 사항을 제안할 수 있습니다. | 
| 풀 요청 | 읽기 및 쓰기 | 풀 요청 세부 정보를 읽고 자동 코드 검토를 트리거합니다. 쓰기 액세스를 사용하면 조사 결과 및 권장 수정 사항이 포함된 인라인 검토 의견을 게시할 수 있습니다. | 
| 조직 관리 | 읽기 | 대상 조직에 설치된 애플리케이션 목록을 읽어 AWS DevOps 에이전트 GitHub 앱이 설치되었는지 확인합니다. | 

## GitHub 연결 관리
<a name="managing-github-connections"></a>
+ **리포지토리 액세스 업데이트 **- GitHub 앱이 액세스할 수 있는 리포지토리를 변경하려면 GitHub 계정 또는 조직 설정으로 이동합니다. 데이터 레지던시가 있는 GitHub Enterprise Server 또는 GitHub Enterprise Cloud의 경우 인스턴스 설정으로 이동합니다. 그런 다음 설치된 GitHub 앱으로 이동하여 AWS DevOps 에이전트 앱 구성을 수정합니다.
+ **연결된 리포지토리 보기** - AWS DevOps 에이전트 콘솔에서 에이전트 스페이스를 선택하고 기능 탭으로 이동하여 파이프라인 섹션에서 연결된 리포지토리를 봅니다.
+ **GitHub 연결 제거** - 에이전트 공간에서 GitHub를 연결 해제하려면 파이프라인 섹션에서 연결을 선택한 다음 **제거**를 선택합니다. 계정에서 GitHub 등록을 제거하려면 **기능 공급자** 페이지로 이동하여 **GitHub** 섹션에서 등록을 찾은 다음 **등록 취소**를 선택합니다.

GitHub 통합을 완전히 제거하려면 다음을 수행합니다.
+ GitHub 앱을 제거하려면 GitHub 계정 또는 조직 설정으로 이동합니다.
+ 다시 연결하려면 AWS DevOps 에이전트 콘솔에서 GitHub를 다시 등록합니다.

데이터 레지던시가 있는 GitHub Enterprise Server 및 GitHub Enterprise Cloud의 경우 AWS DevOps Agent는 등록 중에 인스턴스에 GitHub 앱을 생성합니다. 앱을 완전히 정리하려면 다음 두 가지를 모두 수행합니다.
+ **앱 제거** - **설정 > 애플리케이션 > 설치된 GitHub 앱**으로 이동하여 앱에서 **구성을** 선택한 다음 제거합니다.
+ **앱 삭제** - **설정 > 개발자 설정 > GitHub 앱**으로 이동하여 앱을 선택하고 **고급** 탭으로 이동한 다음 ** GitHub 앱 삭제**를 선택합니다. **경고:** GitHub 앱 삭제는 영구적이며 실행 취소할 수 없습니다. 새 앱을 생성하려면 AWS DevOps 에이전트 콘솔에서 GitHub를 다시 등록합니다.