InfoGrab DocsInfoGrab Docs

Bitbucket Cloud 임포터 개발자 문서

요약

Bitbucket에 인증된 상태여야 합니다. 임포터의 코드베이스는 다음 디렉터리로 나뉘어 있습니다. Bitbucket Cloud 프로젝트를 임포트하면 작업이 여러 Stage로 나뉘고, 각 Stage는 실행되는 Sidekiq job의 집합으로 구성됩니다.

사전 요구 사항#

Bitbucket에 인증된 상태여야 합니다.

코드 구조#

임포터의 코드베이스는 다음 디렉터리로 나뉘어 있습니다.

  • lib/gitlab/bitbucket_import: 리소스 임포트에 사용하는 클래스 등 대부분의 코드가 들어 있습니다.
  • app/workers/gitlab/bitbucket_import: Sidekiq 워커가 들어 있습니다.

아키텍처 개요#

Bitbucket Cloud 프로젝트를 임포트하면 작업이 여러 Stage로 나뉘고, 각 Stage는 실행되는 Sidekiq job의 집합으로 구성됩니다. 각 Stage 사이에는 현재 Stage의 모든 작업이 끝났는지 주기적으로 확인하고, 끝났으면 임포트 과정을 다음 Stage로 넘기는 job 이 예약됩니다. 이를 처리하는 워커는 Gitlab::BitbucketImport::AdvanceStageWorker 입니다.

Stage#

1. Stage::ImportRepositoryWorker#

이 워커는 리포지터리와 위키, 레이블을 임포트하고 완료되면 다음 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 인증을 설정하려면 다음 절차를 따릅니다.

  1. 문서의 9단계까지 따라 Bitbucket OAuth 자격 증명을 생성합니다.

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

    # config/gitlab.yml
    
    development:
      <<: *base
      omniauth:
        providers:
        - { name: 'bitbucket',
            app_id: '...',
            app_secret: '...' }
    
  3. gdk restart를 실행합니다.

  4. GDK에 로그인해 <gdk-url>/-/profile/account로 이동한 뒤 Bitbucket을 연결합니다.

Bitbucket Cloud 임포터 개발자 문서

GitLab v19.4
원문 보기

요약

Bitbucket에 인증된 상태여야 합니다. 임포터의 코드베이스는 다음 디렉터리로 나뉘어 있습니다. Bitbucket Cloud 프로젝트를 임포트하면 작업이 여러 Stage로 나뉘고, 각 Stage는 실행되는 Sidekiq job의 집합으로 구성됩니다.

사전 요구 사항#

Bitbucket에 인증된 상태여야 합니다.

코드 구조#

임포터의 코드베이스는 다음 디렉터리로 나뉘어 있습니다.

  • lib/gitlab/bitbucket_import: 리소스 임포트에 사용하는 클래스 등 대부분의 코드가 들어 있습니다.
  • app/workers/gitlab/bitbucket_import: Sidekiq 워커가 들어 있습니다.

아키텍처 개요#

Bitbucket Cloud 프로젝트를 임포트하면 작업이 여러 Stage로 나뉘고, 각 Stage는 실행되는 Sidekiq job의 집합으로 구성됩니다. 각 Stage 사이에는 현재 Stage의 모든 작업이 끝났는지 주기적으로 확인하고, 끝났으면 임포트 과정을 다음 Stage로 넘기는 job 이 예약됩니다. 이를 처리하는 워커는 Gitlab::BitbucketImport::AdvanceStageWorker 입니다.

Stage#

1. Stage::ImportRepositoryWorker#

이 워커는 리포지터리와 위키, 레이블을 임포트하고 완료되면 다음 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 인증을 설정하려면 다음 절차를 따릅니다.

  1. 문서의 9단계까지 따라 Bitbucket OAuth 자격 증명을 생성합니다.

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

    # config/gitlab.yml
    
    development:
      <<: *base
      omniauth:
        providers:
        - { name: 'bitbucket',
            app_id: '...',
            app_secret: '...' }
    
  3. gdk restart를 실행합니다.

  4. GDK에 로그인해 <gdk-url>/-/profile/account로 이동한 뒤 Bitbucket을 연결합니다.