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개 이상의 노트나 diff 노트를 가져오지 못하도록 하는 제한이 있습니다. 이 한계에 도달하면 GitHub API는 대신 다음과 같은 오류를 반환합니다:
모든 사용자에 대해 API를 빠르게 유지하기 위해 이 자원에 대한 페이지네이션이 제한됩니다. 거슬러 올라갈 수 있는 가장 먼 곳을 확인하려면 링크 응답 헤더의 rel=last 링크 관계를 확인하세요.
댓글이 많은 GitHub 프로젝트를 가져올 때는 Use alternative comments import method 추가 가져올 항목 체크박스를 선택하세요. 이 설정을 사용하면 가져오기 프로세스에 네트워크 요청 수를 증가시켜 시간이 더 소요되지만 가져오기를 수행하는 데 필요한 작업을 늘립니다.
페이지당 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에 연결할 수 없음
GitHub에 연결할 수 없는 자체 관리형 GitLab 15.10 이전 버전이며 프록시 뒤에서 실행 중인 경우 github.com
또는 api.github.com
의 DNS를 해결할 수 없습니다.
GitLab 인스턴스는 가져오기 중에 GitHub에 연결하지 못하며 로컬 요청을 허용하는 목록에 github.com
및 api.github.com
항목을 추가해야 합니다.