InfoGrab DocsInfoGrab Docs

다이렉트 트랜스퍼 임포터에 새 관계 추가하기

GitLab 다이렉트 트랜스퍼 임포터에 새로운 관계(relation)를 추가하는 방법과 ETL 파이프라인 구성, UI 적용 절차를 설명합니다.

개략적으로 설명하면, 다이렉트 트랜스퍼 임포터에 새 관계를 추가하려면 다음 작업이 필요합니다: 내보내기 데이터 목록에 새 관계를 추가합니다. 가져오기 측에 데이터 처리 지침이 포함된 새로운 ETL(Extract/Transform/Load) 파이프라인을 추가합니다. 새로 생성된 파이프라인을 가져오기 Stage 목록에 추가합니다. UI에 표시할 새로 생성된 관계의 라벨을 추가합니다. 충분한 테스트 커버리지를 확보합니다. 버그 및 성능 문제 도입 위험을 줄이기 위해, 새로 추가된 관계는 기능 플래그 뒤에 배치해야 합니다. 소스에서 내보내기 # 내보내는 관계의 유형은 다음과 같습니다: ActiveRecord 연관관계. import_export.yml 파일에서 읽어 JSON으로 직렬화하고 NDJSON 파일에 씁니다. 각 관계는 .gz 파일 또는 컬렉션인 경우 .tar.gz 파일로 내보내져 업로드되며, GitLab 대상 인스턴스의 REST API를 사용하여 다운로드 및 가져오기에 제공됩니다. 바이너리 파일. 예를 들어 업로드 파일이나 LFS 오브젝트 등입니다. 내보내지 않고 가져오기 중 GraphQL API에서 직접 읽는 소수의 관계. ActiveRecord 연관관계의 경우 성능상의 이유로 GraphQL API 대신 NDJSON을 사용해야 합니다. 깊게 중첩된 연관관계는 많은 네트워크 요청을 생성하여 전체 마이그레이션 속도를 저하시킬 수 있습니다. ActiveRecord 관계 내보내기 # 다이렉트 트랜스퍼 임포터의 기본 동작은 파일 기반 임포터에 크게 기반하며, 내보내기에 포함할 Project 연관관계 목록을 설명하는 import_export.yml 파일을 사용합니다. Group 에는 유사한 import_export.yml 이 있습니다. 예를 들어 documents 라는 새로운 Project 연관관계에 대한 가져오기 지원을 추가하려면 다음을 수행해야 합니다: import_export.yml 파일에 추가합니다. 새 관계에 대한 테스트 커버리지를 추가합니다. 추가된 관계가 예상대로 내보내지는지 확인합니다. import_export.yml 파일에 추가하기 # 이 파일에 나열된 연관관계는 위에서 아래 순서로 가져옵니다. 순서에 의존하는 연관관계가 있는 경우, 해당 연관관계가 필요한 연관관계보다 앞에 의존성을 배치하십시오. 예를 들어, 문서(documents)는 머지 리퀘스트(merge requests)보다 먼저 가져와야 합니다. 그렇지 않으면 유효하지 않습니다. import_export.yml 내 tree.project 에 연관관계를 추가합니다. diff --git a/lib/gitlab/import_export/project/import_export.yml b/lib/gitlab/import_export/project/import_export.yml index 43d66e0e67b7..0880a27dfce2 100644 --- a/lib/gitlab/import_export/project/import_export.yml +++ b/lib/gitlab/i