사용자 지정 그룹 수준 프로젝트 템플릿 개발 지침
이 문서는 사용자 정의 그룹 수준 프로젝트 템플릿의 코드 디자인을 이해하는 데 도움을 주기 위해 작성되었습니다. 이 기능의 코드를 변경하기 전에 이 문서를 읽어야 합니다.
이 문서는 코드가 자주 변경될 수 있기 때문에 코드 디자인에 대한 개요로 제한되어 있습니다. 특정 기능이 작동하는 방식을 이해하려면 코드와 스펙을 확인해야 합니다. 여기서의 세부 정보는 템플릿 기능의 주요 구성 요소가 어떻게 작동하는지 설명합니다.
참고: 이 문서는 이 문서에서 참조된 코드베이스의 일부가 업데이트되거나 제거되거나 새로운 부분이 추가될 때 업데이트되어야 합니다.
기본 개요
사용자 정의 그룹 수준 프로젝트 템플릿은 보통의 프로젝트가 내보내어져 새로 생성된 프로젝트로 가져오는 것입니다.
우리에게는 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
에 정의됨.
-
-
Gitlab::ImportExport::UploadsManager
: 업로드된 파일을 내보내는 처리-
lib/gitlab/import_export/uploads_manager.rb
에 정의됨.
-
-
Gitlab::ImportExport::AvatarSaver
: 아바타를 내보냄-
lib/gitlab/import_export/avatar_saver.rb
에 정의됨.
-
-
Gitlab::ImportExport::Project::TreeSaver
: 프로젝트와 관련 객체를 내보냄-
lib/gitlab/import_export/project/tree_saver.rb
에 정의됨.
-
-
EE:Gitlab::ImportExport::Project::TreeSaver
: 프로젝트와 관련 객체를 내보내는 EE 확장-
lib/gitlab/import_export/project/tree_saver.rb
에 정의됨.
-
-
Gitlab::ImportExport::Json::StreamingSerializer
: 내보낸 객체를 JSON으로 직렬화-
lib/gitlab/import_export/json/streaming_serializer.rb
에 정의됨.
-