GitHub에서 GitLab로 프로젝트 가져오기 문제 해결
GitHub에서 GitLab로 프로젝트를 가져올 때 다음과 같은 문제를 만날 수 있습니다.
이전에 실패한 가져오기 프로세스를 수동으로 계속하기
경우에 따라 GitHub 가져오기 프로세스가 리포지토리를 가져오는 데 실패할 수 있습니다. 이로 인해 GitLab이 프로젝트 가져오기 프로세스를 중단하고 리포지토리를 수동으로 가져와야 합니다. 관리자는 실패한 가져오기 프로세스에 대해 리포지토리를 수동으로 가져올 수 있습니다:
-
Rails 콘솔을 엽니다.
-
콘솔에서 다음 일련의 명령을 실행합니다:
project_id = <PROJECT_ID> github_access_token = <GITHUB_ACCESS_TOKEN> github_repository_path = '<GROUP>/<REPOSITORY>' github_repository_url = "https://#{github_access_token}@github.com/#{github_repository_path}.git" # ID로 프로젝트 찾기 project = Project.find(project_id) # 가져오기 URL 및 자격 증명 설정 project.import_url = github_repository_url project.import_type = 'github' project.import_source = github_repository_path project.save! # 프로젝트가 수동으로 생성되었고 실패한 가져기에서 가져온 것이 아닌 경우 가져오기 상태 생성 project.create_import_state if project.import_state.blank? # 상태를 시작으로 설정 project.import_state.force_start # 선택 사항: 가져오기에서 특정 선택적 단계가 선택되었거나 타임아웃 전략이 설정된 경우 여기에서 재설정할 수 있습니다. 아래는 예시입니다. # 매개변수는 API에 문서화된 형식을 따릅니다: # https://docs.gitlab.com/ee/api/import.html#import-repository-from-github Gitlab::GithubImport::Settings .new(project) .write( timeout_strategy: "optimistic", optional_stages: { single_endpoint_issue_events_import: true, single_endpoint_notes_import: true, attachments_import: true, collaborators_import: true } ) # 두 번째 단계에서 가져오기 트리거 Gitlab::GithubImport::Stage::ImportRepositoryWorker.perform_async(project.id)
접두사가 누락되어 가져오기 실패
GitLab 16.5 이상에서는 Import failed due to a GitHub error: (HTTP 406)
라는 오류가 발생할 수 있습니다.
이 문제는 GitLab 16.5에서 GitHub 가져오기 도구에서 경로 접두사 api/v3
가 제거되었기 때문에 발생합니다. 이는 가져오기 도구가 Gitlab::LegacyGithubImport::Client
를 사용하지 않게 되었기 때문입니다. 이 클라이언트는 GitHub Enterprise URL에서 가져올 때 자동으로 api/v3
접두사를 추가했습니다.
이 오류를 해결하려면 GitHub Enterprise URL에서 가져올 때 api/v3
접두사 추가를 수행하세요.
대형 프로젝트 가져오기 시 오류 발생
GitHub 가져오기 도구는 대형 프로젝트를 가져올 때 일부 오류가 발생할 수 있습니다.
댓글 누락
GitHub API에는 약 30,000개의 노트 또는 차이 노트를 초과하여 가져오는 것을 방지하는 제한이 있습니다. 이 제한에 도달하면 GitHub API는 다음 오류를 반환합니다:
모두에게 API를 빠르게 유지하기 위해 이 리소스에 대한 페이지네이션이 제한됩니다. 링크 응답 헤더의 rel=last 링크 관계를 확인하여 얼마나 멀리 돌아갈 수 있는지 확인하세요.
댓글 수가 많은 GitHub 프로젝트를 가져올 때, 대체 댓글 가져오기 방법 사용 가져올 추가 항목 체크박스를 선택하세요. 이 설정은 가져오기 프로세스에 필요한 네트워크 요청 수를 증가시켜 가져오기를 오래 걸리게 만듭니다.
GitHub API 요청 객체 수 줄이기
일부 GitHub API 엔드포인트는 큰 리포지토리에서 프로젝트 가져오기 시 500
또는 502
오류를 반환할 수 있습니다.
이러한 오류의 가능성을 줄이기 위해 데이터 가져오는 그룹 프로젝트에서 github_importer_lower_per_page_limit
기능 플래그를 활성화하세요.
활성화되면 이 플래그는 페이지 크기를 100
에서 50
으로 줄입니다.
이 기능 플래그를 활성화하려면:
- Rails 콘솔을 시작합니다.
-
다음
enable
명령을 실행합니다:group = Group.find_by_full_path('my/group/fullpath') # 활성화 Feature.enable(:github_importer_lower_per_page_limit, group)
기능 플래그를 비활성화하려면 다음 명령을 실행합니다:
# 비활성화
Feature.disable(:github_importer_lower_per_page_limit, group)
GitLab 인스턴스가 GitHub에 연결할 수 없음
GitLab 15.10 또는 이전 버전을 실행하는 자가 관리 인스턴스가 프록시 뒤에 있을 경우 github.com
또는 api.github.com
에 대한 DNS를 해결할 수 없습니다.
GitLab 인스턴스는 가져기 과정 중 GitHub에 연결하지 못하며, 로컬 요청을 위한 허용 목록에 github.com
및 api.github.com
항목을 추가해야 합니다.