사용자 지정 그룹 수준 프로젝트 템플릿 개발 지침
이 문서는 사용자 정의 그룹 수준 프로젝트 템플릿의 코드 디자인을 이해하는 데 도움을 주기 위해 작성되었습니다. 이 기능의 코드를 변경하기 전에 이 문서를 읽어야 합니다.
이 문서는 코드가 자주 변경될 수 있기 때문에 코드 디자인에 대한 개요로 제한되어 있습니다. 특정 기능이 작동하는 방식을 이해하려면 코드와 스펙을 확인해야 합니다. 여기서의 세부 정보는 템플릿 기능의 주요 구성 요소가 어떻게 작동하는지 설명합니다.
참고: 이 문서는 이 문서에서 참조된 코드베이스의 일부가 업데이트되거나 제거되거나 새로운 부분이 추가될 때 업데이트되어야 합니다.
기본 개요
사용자 정의 그룹 수준 프로젝트 템플릿은 보통의 프로젝트가 내보내어져 새로 생성된 프로젝트로 가져오는 것입니다.
우리에게는 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에 정의됨. 
 - 
 
도움말