InfoGrab DocsInfoGrab Docs

Bitbucket Cloud 임포터 개발자 문서

요약

Bitbucket으로 인증이 되어 있어야 합니다: GitLab Development Kit(GDK)을 사용하는 경우, GDK에서 Bitbucket 인증 설정을 참조하세요. 그렇지 않은 경우, Bitbucket OmniAuth 제공자 안내를 참조하세요.

전제 조건#

Bitbucket으로 인증이 되어 있어야 합니다:

코드 구조#

임포터의 코드베이스는 다음 디렉터리들로 나뉩니다:

  • lib/gitlab/bitbucket_import: 이 디렉터리에는 리소스를 임포트하는 데 사용되는 클래스 등 대부분의 코드가 포함되어 있습니다.

  • app/workers/gitlab/bitbucket_import: 이 디렉터리에는 Sidekiq 워커가 포함되어 있습니다.

아키텍처 개요#

Bitbucket Cloud 프로젝트를 임포트할 때 작업은 별도의 Stage로 나뉘며, 각 Stage는 실행되는 Sidekiq job 집합으로 구성됩니다. 각 Stage 사이에는 현재 Stage의 모든 작업이 완료되었는지 주기적으로 확인하는 job이 스케줄되며, 완료된 경우 임포트 프로세스를 다음 Stage로 진행합니다. 이를 처리하는 워커는 Gitlab::BitbucketImport::AdvanceStageWorker입니다.

Stage#

1. Stage::ImportRepositoryWorker#

이 워커는 리포지터리, wiki 및 라벨을 임포트하고, 완료되면 다음 Stage를 스케줄합니다.

2. Stage::ImportUsersWorker#

이 워커는 소스 Bitbucket Cloud 워크스페이스의 멤버를 임포트합니다.

3. Stage::ImportPullRequestsWorker#

이 워커는 모든 풀 리퀘스트를 임포트합니다. 각 풀 리퀘스트마다 Gitlab::BitbucketImport::ImportPullRequestWorker 워커의 job이 스케줄됩니다.

4. Stage::ImportPullRequestsNotesWorker#

이 워커는 모든 머지 리퀘스트의 노트(댓글)를 임포트합니다.

각 머지 리퀘스트마다 Gitlab::BitbucketImport::ImportPullRequestNotesWorker 워커의 job이 스케줄되며, 해당 머지 리퀘스트의 모든 노트를 임포트합니다.

5. Stage::ImportIssuesWorker#

이 워커는 모든 이슈를 임포트합니다. 각 이슈마다 Gitlab::BitbucketImport::ImportIssueWorker 워커의 job이 스케줄됩니다.

6. Stage::ImportIssuesNotesWorker#

이 워커는 모든 이슈의 노트(댓글)를 임포트합니다.

각 이슈마다 Gitlab::BitbucketImport::ImportIssueNotesWorker 워커의 job이 스케줄되며, 해당 이슈의 모든 노트를 임포트합니다.

7. Stage::FinishImportWorker#

이 워커는 임포트를 완료된 것으로 표시하는 등의 정리 작업을 수행하여 임포트 프로세스를 완료합니다.

백오프 및 재시도#

속도 제한을 처리하기 위해 요청은 Bitbucket::ExponentialBackoff로 래핑됩니다. 이 래퍼는 속도 제한 오류를 캐치하고 최대 세 번까지 일정 지연 후 재시도합니다.

GDK에서 Bitbucket 인증 설정#

GDK에서 Bitbucket 인증을 설정하려면:

Bitbucket OAuth 자격 증명을 생성하기 위해 9단계까지 문서를 따르세요.

자격 증명을 config/gitlab.yml에 추가합니다:

# config/gitlab.yml

development:
  <<: *base
  omniauth:
    providers:
    - { name: 'bitbucket',
        app_id: '...',
        app_secret: '...' }

gdk restart를 실행합니다.

GDK에 로그인하고, <gdk-url>/-/profile/account로 이동하여 Bitbucket을 연결합니다.

Bitbucket Cloud 임포터 개발자 문서

GitLab v19.1
원문 보기
요약

Bitbucket으로 인증이 되어 있어야 합니다: GitLab Development Kit(GDK)을 사용하는 경우, GDK에서 Bitbucket 인증 설정을 참조하세요. 그렇지 않은 경우, Bitbucket OmniAuth 제공자 안내를 참조하세요.

전제 조건#

Bitbucket으로 인증이 되어 있어야 합니다:

코드 구조#

임포터의 코드베이스는 다음 디렉터리들로 나뉩니다:

  • lib/gitlab/bitbucket_import: 이 디렉터리에는 리소스를 임포트하는 데 사용되는 클래스 등 대부분의 코드가 포함되어 있습니다.

  • app/workers/gitlab/bitbucket_import: 이 디렉터리에는 Sidekiq 워커가 포함되어 있습니다.

아키텍처 개요#

Bitbucket Cloud 프로젝트를 임포트할 때 작업은 별도의 Stage로 나뉘며, 각 Stage는 실행되는 Sidekiq job 집합으로 구성됩니다. 각 Stage 사이에는 현재 Stage의 모든 작업이 완료되었는지 주기적으로 확인하는 job이 스케줄되며, 완료된 경우 임포트 프로세스를 다음 Stage로 진행합니다. 이를 처리하는 워커는 Gitlab::BitbucketImport::AdvanceStageWorker입니다.

Stage#

1. Stage::ImportRepositoryWorker#

이 워커는 리포지터리, wiki 및 라벨을 임포트하고, 완료되면 다음 Stage를 스케줄합니다.

2. Stage::ImportUsersWorker#

이 워커는 소스 Bitbucket Cloud 워크스페이스의 멤버를 임포트합니다.

3. Stage::ImportPullRequestsWorker#

이 워커는 모든 풀 리퀘스트를 임포트합니다. 각 풀 리퀘스트마다 Gitlab::BitbucketImport::ImportPullRequestWorker 워커의 job이 스케줄됩니다.

4. Stage::ImportPullRequestsNotesWorker#

이 워커는 모든 머지 리퀘스트의 노트(댓글)를 임포트합니다.

각 머지 리퀘스트마다 Gitlab::BitbucketImport::ImportPullRequestNotesWorker 워커의 job이 스케줄되며, 해당 머지 리퀘스트의 모든 노트를 임포트합니다.

5. Stage::ImportIssuesWorker#

이 워커는 모든 이슈를 임포트합니다. 각 이슈마다 Gitlab::BitbucketImport::ImportIssueWorker 워커의 job이 스케줄됩니다.

6. Stage::ImportIssuesNotesWorker#

이 워커는 모든 이슈의 노트(댓글)를 임포트합니다.

각 이슈마다 Gitlab::BitbucketImport::ImportIssueNotesWorker 워커의 job이 스케줄되며, 해당 이슈의 모든 노트를 임포트합니다.

7. Stage::FinishImportWorker#

이 워커는 임포트를 완료된 것으로 표시하는 등의 정리 작업을 수행하여 임포트 프로세스를 완료합니다.

백오프 및 재시도#

속도 제한을 처리하기 위해 요청은 Bitbucket::ExponentialBackoff로 래핑됩니다. 이 래퍼는 속도 제한 오류를 캐치하고 최대 세 번까지 일정 지연 후 재시도합니다.

GDK에서 Bitbucket 인증 설정#

GDK에서 Bitbucket 인증을 설정하려면:

Bitbucket OAuth 자격 증명을 생성하기 위해 9단계까지 문서를 따르세요.

자격 증명을 config/gitlab.yml에 추가합니다:

# config/gitlab.yml

development:
  <<: *base
  omniauth:
    providers:
    - { name: 'bitbucket',
        app_id: '...',
        app_secret: '...' }

gdk restart를 실행합니다.

GDK에 로그인하고, <gdk-url>/-/profile/account로 이동하여 Bitbucket을 연결합니다.