Custom group-level project templates 개발 지침
이 문서는 사용자 그룹 수준 프로젝트 템플릿의 코드 디자인을 이해하는 데 도움을 주기 위해 작성되었습니다. 이 기능의 코드를 변경하기 전에 이 문서를 읽어야 합니다.
이 문서는 코드가 자주 변경될 수 있기 때문에 코드 설계에 대한 개요로 의도적으로 제한되어 있습니다. 특정 기능이 작동하는 방법을 이해하려면 코드와 스펙을 확인해야 합니다. 여기에 설명된 세부 정보는 템플릿 기능의 주요 컴포넌트가 작동하는 방식을 설명합니다.
이 문서는 이 문서에서 참조된 코드베이스의 부분이 업데이트되거나 제거되거나 새로운 부분이 추가될 때 업데이트되어야 합니다.
기본 개요
사용자 그룹 수준 프로젝트 템플릿은 일반 프로젝트를 내보내어 새로 생성된 프로젝트로 가져온 것입니다.
Group1
에 Subgroup1
이라는 템플릿 서브그룹이 포함된 경우를 가정해 보겠습니다. Subgroup1에서 Template1
이라는 프로젝트가 있습니다. User1
이 Template1
을 사용하여 Group1
내에 Project1
을 생성하는 경우, 로직은 다음 단계를 따릅니다:
-
Project1
을 초기화합니다. -
Template1
을 내보냅니다. -
Project1
으로 가져옵니다.
비즈니스 로직
-
ProjectsController#create
: 흐름이 시작되는 컨트롤러-
app/controllers/projects_controller.rb
에 정의됨.
-
-
Projects::CreateService
: 프로젝트 생성을 처리함.-
app/services/projects/create_service.rb
에 정의됨.
-
-
EE::Projects::CreateService
: 생성 서비스에 대한 EE 확장-
ee/app/services/ee/projects/create_service.rb
에 정의됨.
-
-
Projects::CreateFromTemplateService
: 사용자 정의 프로젝트 템플릿에서 프로젝트를 생성하는데 사용됨.-
app/services/projects/create_from_template_service.rb
에 정의됨.
-
-
EE:Projects::CreateFromTemplateService
: 템플릿 생성 서비스의 EE 확장-
ee/app/services/ee/projects/create_from_template_service.rb
에 정의됨.
-
-
Projects::GitlabProjectsImportService
: 템플릿 가져오기를 처리함.-
app/services/projects/gitlab_projects_import_service.rb
에 정의됨.
-
-
EE::Projects::GitlabProjectsImportService
: 가져오기 서비스의 EE 확장-
ee/app/services/ee/projects/gitlab_projects_import_service.rb
에 정의됨.
-
-
ProjectTemplateExportWorker
: 사용자 정의 템플릿 내보내기를 처리함.-
ee/app/workers/project_template_export_worker.rb
에 정의됨.
-
-
ProjectExportWorker
: ProjectTemplateExportWorker의 기본 클래스.-
app/workers/project_export_worker.rb
에 정의됨.
-
-
Projects::ImportExport::ExportService
: 프로젝트 내보내기 서비스.-
app/workers/project_export_worker.rb
에 정의됨.
-
-
Gitlab::ImportExport::VersionSaver
: 버전을 내보내는 핸들러.-
lib/gitlab/import_export/version_saver.rb
에 정의됨.
-
<…이하 생략…>