GitHub Enterprise Importer을(를) 사용한 조직 마이그레이션 정보
GitHub Enterprise Cloud(으)로의 마이그레이션에는 GitHub.com의 계정 간 마이그레이션이 포함되며, 데이터 보존을(를) 채택하는 경우 GHE.com의 엔터프라이즈 하위 도메인으로의 마이그레이션도 포함됩니다.
GitHub CLI 또는 API를 사용하여 마이그레이션을 실행할 수 있습니다.
GitHub CLI은(는) 마이그레이션 프로세스를 간소화하며 대부분의 고객에게 권장됩니다. 사용자 지정 요구 사항이 많은 고급 고객은 API를 사용하여 GitHub Enterprise Importer와 자체 통합을 빌드할 수 있습니다.
마이그레이션의 대상 조직 또는 엔터프라이즈에 규칙 집합이 사용하도록 설정된 경우 마이그레이션된 리포지토리의 기록이 해당 규칙을 위반할 수 있습니다. 규칙 집합을 사용하지 않도록 설정하지 않고 마이그레이션을 허용하려면 해당하는 각 규칙 집합에 대한 바이패스 목록에 "리포지토리 마이그레이션"을 추가합니다. 이 바이패스는 마이그레이션 중에만 적용됩니다. 완료되면 규칙 집합이 모든 새 기여에 적용됩니다.
바이패스 구성:
- 각 엔터프라이즈 또는 조직 규칙 집합으로 이동합니다.
- "바이패스 목록" 섹션에서 바이패스 추가를 클릭합니다.
-
**리포지토리 마이그레이션을** 선택합니다.
자세한 내용은 조직에서 리포지토리에 대한 규칙 집합 만들기을(를) 참조하세요.
필수 구성 요소
- 마이그레이션의 평가판을 수행하고 곧바로 프로덕션 마이그레이션을 완료하는 것이 좋습니다. 평가판 실행에 대한 자세한 내용은 GitHub 제품 간 마이그레이션의 개요을(를) 참조하세요.
- 마이그레이션될 데이터와 가져오기 도구의 알려진 지원 제한 사항을 이해했는지 확인하세요. 자세한 내용은 GitHub 제품 간 마이그레이션 정보을(를) 참조하세요.
- 필수는 아니지만 프로덕션 마이그레이션 중에는 작업을 중지하는 것이 좋습니다. Importer은(는) 델타 마이그레이션을 지원하지 않으므로 마이그레이션 중에 발생하는 변경 내용은 마이그레이션되지 않습니다. 프로덕션 마이그레이션 중에 작업을 중단하지 않도록 선택하는 경우, 이러한 변경 내용을 수동으로 마이그레이션해야 합니다.
- 원본 조직의 경우, 조직 소유자이거나 마이그레이터 역할이 있어야 합니다. 자세한 내용은 GitHub 제품 간의 마이그레이션에 대한 액세스 관리을(를) 참조하세요.
- 대상 엔터프라이즈 계정의 경우, 사용자가 엔터프라이즈 소유자여야 합니다.
- 조직 마이그레이션은 최대 5,000개 리포지토리를 포함한 조직을 마이그레이션할 수 있습니다. 조직에 5,000개를 초과하는 리포지토리가 포함되어 있다면 GitHub.com에서 GitHub Enterprise Cloud로 리포지토리 마이그레이션의 지침을 따르세요.
0단계: GitHub GraphQL API 사용 준비
GraphQL 쿼리를 만들려면 사용자 고유의 스크립트를 작성하거나 Insomnia와 같은 HTTP 클라이언트를 사용해야 합니다.
인증 방법을 포함하여 GitHub GraphQL API를 시작하는 방법에 대한 자세한 내용은 GraphQL을 사용하여 통화 구성을(를) 참조하세요.
모든 GraphQL 쿼리를 마이그레이션의 대상으로 보냅니다. 데이터 보존 기능을 갖춘 GitHub Enterprise Cloud로 마이그레이션하는 경우 엔터프라이즈의 하위 도메인인 GHE.com에 대한 엔드포인트로 쿼리를 보내세요.
1단계: 마이그레이션 대상의 엔터프라이즈 ID 가져오기
GitHub.com에서 엔터프라이즈 소유자인 경우, 다음 쿼리를 사용하여 마이그레이션된 조직을 소유할 엔터프라이즈 계정의 ID를 반환받으세요. 마이그레이션 대상을 식별하려면 엔터프라이즈 ID가 필요합니다.
query(
$slug: String!
){
enterprise (slug: $slug)
{
slug
id
}
}
| 쿼리 변수 | 설명 |
|---|---|
slug | 엔터프라이즈의 URL, https://github.com/enterprises/SLUG 또는 https://SLUG.ghe.com을 확인하여 식별할 수 있는 엔터프라이즈 계정에 대한 슬러그입니다. |
2단계: 조직 마이그레이션 시작
마이그레이션을 시작하면, 단일 조직과 그에 수반되는 데이터가 사용자가 지정한 대상 엔터프라이즈 내의 완전히 새로운 조직으로 마이그레이션됩니다.
mutation startOrganizationMigration (
$sourceOrgUrl: URI!,
$targetOrgName: String!,
$targetEnterpriseId: ID!,
$sourceAccessToken: String!,
$targetAccessToken: String!
){
startOrganizationMigration( input: {
sourceOrgUrl: $sourceOrgUrl,
targetOrgName: $targetOrgName,
targetEnterpriseId: $targetEnterpriseId,
sourceAccessToken: $sourceAccessToken,
targetAccessToken: $targetAccessToken
}) {
orgMigration {
id
}
}
}
| 쿼리 변수 | 설명 |
|---|---|
sourceOrgUrl | 예: https://github.com/octo-org와(과) 같은 원본 조직의 URL. |
targetOrgName | 새 조직에 지정할 이름. 대상 플랫폼에서 다른 조직과 공유할 수 없습니다. |
targetEnterpriseId | 2단계에서 반환된, 새 조직을 만들 엔터프라이즈의 ID. |
sourceAccessToken | 원본 조직용 personal access token (classic). 요구 사항은 GitHub 제품 간의 마이그레이션에 대한 액세스 관리을(를) 참조하세요. |
targetAccessToken | 대상 엔터프라이즈용 personal access token (classic). |
다음 단계에서는 startOrganizationMigration 변경에서 반환된 마이그레이션 ID를 사용하여 마이그레이션 상태를 확인합니다.
3단계: 마이그레이션 상태 확인
마이그레이션 실패를 감지하고 마이그레이션이 정상적으로 작동하는지 확인하려면, getMigration 쿼리를 사용하여 생성한 OrganizationMigration(들)의 마이그레이션 상태를 조회할 수 있습니다.
쿼리는 마이그레이션이 queued, in progress, failed 또는 completed 중 어느 상태인지 알려주는 상태와 함께, 마이그레이션을 기다리고 있는 리포지토리 수에 대한 정보도 반환합니다. 마이그레이션이 실패한 경우 Importer에서 실패 이유를 제공합니다.
query (
$id: ID!
){
node( id: $id ) {
... on OrganizationMigration {
id
sourceOrgUrl
targetOrgName
state
failure_reason
remaining_repositories_count
total_repositories_count
}
}
}
| 쿼리 변수 | 설명 |
|---|---|
id | 마이그레이션의 id. |
1단계: GEI extension of the GitHub CLI
설치
첫 번째 마이그레이션인 경우 GEI extension of the GitHub CLI을(를) 설치해야 합니다. GitHub CLI에 대한 자세한 내용은 GitHub CLI 정보을(를) 참조하세요.
-
GitHub CLI을(를) 설치하세요. GitHub CLI에 대한 설치 지침은 GitHub CLI 리포지토리를 참조하세요.
참고 항목
GitHub CLI 버전 2.4.0 이상이 필요합니다.
gh --version명령을 사용하여 설치한 버전을 검사할 수 있습니다. -
GEI extension을(를) 설치합니다.
Shell gh extension install github/gh-gei
gh extension install github/gh-gei
GEI extension에 대한 도움이 필요할 때마다 명령과 함께 --help 플래그를 사용할 수 있습니다. 예를 들어, gh gei --help은(는) 사용 가능한 모든 명령을 나열하고 gh gei migrate-repo --help은(는) migrate-repo 명령에 사용할 수 있는 모든 옵션을 나열합니다.
2단계: GEI extension of the GitHub CLI
업데이트
GEI extension은(는) 매주 업데이트됩니다. 최신 버전의 확장을 사용하고 있는지 확인합니다.
gh extension upgrade github/gh-gei
3단계: 환경 변수 설정
GEI extension을(를) 사용하여 GitHub Enterprise Cloud로 마이그레이션하기 전에, 원본 조직과 대상 엔터프라이즈에 액세스할 수 있는 personal access tokens (classic)을(를) 만든 다음 personal access tokens (classic)을(를) 환경 변수로 설정해야 합니다.
-
조직 마이그레이션을 위해 원본 조직에 인증하는 데 필요한 모든 요구 사항을 충족하는 personal access token을(를) 만들고 기록하세요. 자세한 내용은 GitHub 제품 간의 마이그레이션에 대한 액세스 관리을(를) 참조하세요.
-
조직 마이그레이션을 위해 대상 엔터프라이즈에 인증하는 데 필요한 모든 요구 사항을 충족하는 personal access token (classic)을(를) 만들고 기록하세요.
-
아래 명령에서 TOKEN을 위에서 기록한 personal access tokens (classic)(으)로 바꿔 personal access tokens (classic)용 환경 변수를 설정하세요. 대상 엔터프라이즈에는
GH_PAT을(를) 사용하고 원본 조직에는GH_SOURCE_PAT을(를) 사용하세요.-
Terminal을 사용하는 경우
export명령을 사용하세요.Shell export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN"
export GH_PAT="TOKEN" export GH_SOURCE_PAT="TOKEN" -
PowerShell을 사용하는 경우
$env명령을 사용하세요.Shell $env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
$env:GH_PAT="TOKEN" $env:GH_SOURCE_PAT="TOKEN"
-
-
데이터 보존 기능을 갖춘 GitHub Enterprise Cloud로 마이그레이션하는 경우, 편리하게 엔터프라이즈에 대한 베이스 API URL의 환경 변수를 설정합니다.
-
터미널을 사용하는 경우
export명령을 사용합니다.Shell export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
export TARGET_API_URL="https://api.SUBDOMAIN.ghe.com" -
PowerShell을 사용하는 경우
$env명령을 사용합니다.Shell $env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
$env:TARGET_API_URL="https://api.SUBDOMAIN.ghe.com"
중요
`SUBDOMAIN`을 엔터프라이즈의 하위 도메인으로 반드시 대체하십시오.예를 들어 엔터프라이즈의 하위 도메인이
acme면 값은TARGET_API_URL다음과 같습니다https://api.acme.ghe.com.이 변수는 GitHub CLI에서 실행하는 명령에
--target-api-url옵션과 함께 사용합니다. -
4단계: 조직 마이그레이션
조직을 마이그레이션하려면 gh gei migrate-org 명령을 사용하세요.
gh gei migrate-org --github-source-org SOURCE --github-target-org DESTINATION --github-target-enterprise ENTERPRISE
gh gei migrate-org --github-source-org SOURCE --github-target-org DESTINATION --github-target-enterprise ENTERPRISE
참고 항목
GHE.com로 마이그레이션하는 경우 --target-api-url TARGET-API-URL을(를) 추가합니다. 여기서 TARGET-API-URL은 엔터프라이즈 하위 도메인의 기본 API URL입니다. 예: https://api.octocorp.ghe.com
명령 내의 자리 표시자를 다음 값으로 바꿉니다.
| 자리 표시자 | 값 |
|---|---|
| SOURCE | 원본 조직의 이름 |
| DESTINATION | 새 조직에 지정할 이름입니다. 대상 플랫폼에서 다른 조직과 공유할 수 없습니다. |
| ENTERPRISE | 대상 엔터프라이즈의 슬러그입니다. 엔터프라이즈 계정의 URL(https://github.com/enterprises/SLUG 또는 https://SLUG.ghe.com)을 확인하여 식별할 수 있습니다. |
5단계: 마이그레이션 검증 및 오류 로그 확인
마이그레이션이 완료되면 마이그레이션 로그 리포지토리를 확인하는 것을 권장합니다. 자세한 내용은 GitHub Enterprise Importer에 대한 마이그레이션 로그 액세스을(를) 참조하세요.
마지막으로, 조직과 마이그레이션된 리포지토리에 대해 건전성 검사를 수행하는 것을 권장합니다.