Bitbucket Cloud에서 마이그레이션
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
Bitbucket Cloud에서 GitLab으로 프로젝트를 가져옵니다. Bitbucket Cloud 가져오기 도구는 Bitbucket Cloud에서 항목의 일부를 가져옵니다. Bitbucket Cloud 항목을 가져올 때:
히스토리
- GitLab 16.0에서 Developer 역할 대신 Maintainer 역할 요구 사항이 도입되었으며 GitLab 15.11.1 및 GitLab 15.10.5에 백포트됨.
- GitLab 16.6에서
bitbucket_parallel_importer라는 플래그와 함께 Bitbucket Cloud 병렬 가져오기가 도입. 기본적으로 비활성화됨. - GitLab 16.6에서 GitLab.com에서 활성화.
- GitLab 16.7에서 일반 공개. 기능 플래그
bitbucket_parallel_importer제거. - GitLab 17.2에서 일부 가져온 항목에 가져옴 배지가 도입.
Bitbucket Cloud에서 GitLab으로 프로젝트를 가져옵니다.
Bitbucket Cloud 가져오기 도구는 Bitbucket Cloud에서 항목의 일부를 가져옵니다.
| Bitbucket Cloud 항목 | 가져옴 |
|---|---|
| 저장소 설명 | ✅ |
| Git 저장소 데이터 | ✅ |
| 이슈 (댓글 포함) | ✅ |
| 풀 리퀘스트 (댓글 포함) | ✅ |
| 마일스톤 | ✅ |
| 위키 | ✅ |
| 레이블 | ✅ |
| 마일스톤 | ✅ |
| LFS 오브젝트 | ✅ |
| 풀 리퀘스트 승인 | ❌ |
| 승인 규칙 | ❌ |
가져오기 도구 워크플로#
Bitbucket Cloud 항목을 가져올 때:
- 풀 리퀘스트 및 이슈에 대한 참조가 유지됩니다.
- 저장소 공개 액세스가 유지됩니다. Bitbucket Cloud에서 저장소가 비공개이면 GitLab에서 비공개로 생성됩니다.
- 가져온 이슈, MR 및 댓글에는 GitLab에 가져옴 배지가 표시됩니다.
이슈, 풀 리퀘스트 및 댓글을 가져올 때 Bitbucket Cloud 가져오기 도구는:
- 작성자/담당자의 Bitbucket 닉네임을 사용하여 GitLab에서 동일한 Bitbucket ID를 찾으려고 합니다.
- 일치하지 않거나 사용자가 GitLab 데이터베이스에서 찾을 수 없는 경우 프로젝트 생성자(일반적으로 가져오기 프로세스를 시작한 현재 사용자)를 작성자로 설정하고 원래 Bitbucket 작성자에 대한 참조를 이슈에 유지합니다.
풀 리퀘스트의 경우 가져오기 도구는:
- 소스 SHA를 사용하고, 저장소에 존재하지 않는 경우 소스 커밋을 머지 커밋 SHA로 설정하려고 합니다.
- MR 담당자를 작성자로 설정하고 GitLab의 Bitbucket ID와 일치하는 사용자 이름으로 검토자를 설정합니다.
- GitLab에서 MR을
opened,closed,merged중 하나로 설정합니다.
이슈의 경우 가져오기 도구는:
- Bitbucket의 이슈 유형에 해당하는 레이블을 추가합니다.
bug,enhancement,proposal,task중 하나. - Bitbucket의 이슈가
resolved,invalid,duplicate,wontfix,closed중 하나이면 GitLab에서 이슈를 닫습니다.
Bitbucket Cloud 가져오기 도구는 존재하지 않는 경우 새 네임스페이스(그룹)를 만듭니다. 네임스페이스가 이미 사용 중인 경우 저장소는 가져오기 프로세스를 시작한 사용자의 네임스페이스 아래에 가져옵니다.
전제 조건#
- Bitbucket Cloud 통합을 활성화하거나 GitLab 관리자에게 활성화를 요청해야 합니다. GitLab.com에서 기본적으로 활성화됩니다.
- Bitbucket Cloud 가져오기 소스를 활성화하거나 GitLab 관리자에게 활성화를 요청해야 합니다. GitLab.com에서 기본적으로 활성화됩니다.
- 가져올 대상 그룹에 Maintainer 또는 소유자 역할이 있어야 합니다.
- Bitbucket의 풀 리퀘스트는 동일한 소스 및 대상 프로젝트를 가져야 하며 프로젝트 포크에서 가져온 것이 아니어야 합니다. 그렇지 않으면 풀 리퀘스트가 빈 MR로 가져옵니다.
사용자 기여가 매핑되려면 각 사용자는 프로젝트 가져오기 전에 다음을 완료해야 합니다:
- Bitbucket 계정 설정의 사용자 이름이 Atlassian 계정 설정의 공개 이름과 일치하는지 확인합니다. 일치하지 않으면 Atlassian 계정 설정의 공개 이름을 Bitbucket 계정 설정의 사용자 이름과 일치하도록 수정합니다.
- GitLab 프로필 서비스 로그인에서 Bitbucket 계정을 연결합니다.
Bitbucket Cloud 앱 비밀번호 생성 (제거됨)#
이 기능은 GitLab 18.9에서 더 이상 사용되지 않으며 GitLab 19.0에서 제거되었습니다. 대신 Bitbucket Cloud API 토큰을 사용하십시오.
Bitbucket Cloud API 토큰 생성#
가져오기 API를 사용하여 Bitbucket Cloud 저장소를 가져오려면 Bitbucket Cloud API 토큰을 만들어야 합니다.
Bitbucket Cloud API 토큰을 생성하려면:
-
https://id.atlassian.com/manage-profile/security/api-tokens로 이동합니다.
-
스코프가 있는 API 토큰 만들기를 선택합니다.
-
토큰 이름과 만료일을 입력한 다음 다음을 선택합니다.
-
Bitbucket을 선택한 다음 다음을 선택합니다.
-
최소한 다음 스코프를 선택합니다:
read:repository:bitbucketread:pullrequest:bitbucketread:issue:bitbucketread:wiki:bitbucket
-
토큰 만들기를 선택하고 토큰을 복사합니다.
Bitbucket Cloud 저장소 가져오기#
- 오른쪽 상단에서 새로 만들기 (+)를 선택하고 새 프로젝트/저장소를 선택합니다.
- 프로젝트 가져오기를 선택합니다.
- Bitbucket Cloud를 선택합니다.
- Bitbucket에 로그인한 다음 액세스 허용을 선택하여 GitLab에 Bitbucket 계정 액세스 권한을 부여합니다.
- 가져올 프로젝트를 선택하거나 모든 프로젝트를 가져옵니다. 이름으로 프로젝트를 필터링하고 각 프로젝트를 가져올 네임스페이스를 선택할 수 있습니다.
- 프로젝트를 가져오려면:
- 처음에는 가져오기를 선택합니다.
- 이후에는 다시 가져오기를 선택합니다. 새 이름을 지정하고 다시 가져오기를 다시 선택합니다. 다시 가져오기는 소스 프로젝트의 새 복사본을 만듭니다.
문제 해결#
이 섹션에는 Bitbucket Cloud에서 가져올 때 발생할 수 있는 문제에 대한 가능한 해결책이 포함되어 있습니다.
가져오기 프로세스에서 잘못된 계정 사용#
올바른 계정으로 로그인했는지 확인합니다. 실수로 잘못된 계정으로 가져오기 프로세스를 시작한 경우 다음 단계를 따릅니다:
- GitLab의 Bitbucket 계정 액세스를 취소합니다. 이는 본질적으로 Bitbucket Cloud 저장소를 가져왔을 때의 프로세스를 되돌리는 것입니다.
- Bitbucket 계정에서 로그아웃하고 Bitbucket Cloud 저장소 가져오기를 다시 수행합니다.
이름이 일치함에도 사용자 매핑 실패#
사용자 매핑이 작동하려면 Bitbucket 계정 설정의 사용자 이름이 Atlassian 계정 설정의 공개 이름과 일치해야 합니다.
이름이 일치하지만 사용자 매핑이 여전히 실패하는 경우, 사용자가 GitLab 프로필 서비스 로그인에서 Bitbucket 계정을 연결한 후 Bitbucket 사용자 이름을 수정했을 수 있습니다.
이 문제를 해결하려면 사용자가 GitLab 데이터베이스의 Bitbucket 외부 UID가 현재 Bitbucket 공개 이름과 일치하는지 확인하고 불일치하는 경우 다시 연결해야 합니다:
- API를 사용하여 인증된 사용자 가져오기.
- API 응답에서
identities속성에는 GitLab 데이터베이스에 있는 Bitbucket 계정이 포함됩니다.extern_uid가 현재 Bitbucket 공개 이름과 일치하지 않으면 사용자는 GitLab 프로필 서비스 로그인에서 Bitbucket 계정을 다시 연결해야 합니다. - 재연결 후 사용자는 API를 다시 사용하여 GitLab 데이터베이스의
extern_uid가 현재 Bitbucket 공개 이름과 일치하는지 확인해야 합니다.
프로젝트를 가져온 사용자는 그런 다음 가져온 프로젝트를 삭제하고 다시 가져와야 합니다.
