커스텀 그룹 레벨 프로젝트 템플릿 개발 지침
이 문서는 기여자들이 커스텀 그룹 레벨 프로젝트 템플릿의 코드 디자인을 이해하는 데 도움을 주기 위해 작성되었습니다. 이 기능의 코드를 변경하기 전에 이 문서를 읽어야 합니다.
이 문서는 목적지 브랜치로의 변경 사항을 통합하기 위한 제안입니다.
::: 경고 이 문서는 코드가 자주 변경되기 때문에 코드가 어떻게 작동하는지 이해하기 위해, 코드와 스펙을 봐야 합니다. 여기에는 템플릿 기능의 주요 컴포넌트가 어떻게 작동하는지에 대한 설명이 있습니다.
이 문서는 참조된 코드베이스의 부분이 업데이트되거나 제거되거나 새로운 부분이 추가될 때에 업데이트되어야 합니다.
기본 개요
커스텀 그룹 레벨 프로젝트 템플릿은 보통의 프로젝트를 내보내고(import) 새로 생성된 프로젝트로 가져옵니다.
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
: 프로젝트 및 관련 객체를 내보내기-
lib/gitlab/import_export/project/tree_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::Json::StreamingSerializer
: 내보낸 객체를 JSON으로 직렬화-
lib/gitlab/import_export/json/streaming_serializer.rb
에 정의됨
-
-
Gitlab::ImportExport::Reader
: 내보낸 JSON 파일을 감싸는 래퍼-
lib/gitlab/import_export/reader.rb
에 정의됨
-
-
Gitlab::ImportExport::AttributesFinder
: 구성을 구문 분석하고 내보낸 JSON 파일에서 속성을 찾음-
lib/gitlab/import_export/attributes_finder.rb
에 정의됨
-
-
Gitlab::ImportExport::Config
: 내보내고 가져오기 YAML 구성 파일을 감싸는 래퍼-
lib/gitlab/import_export/config.rb
에 정의됨
-
-
Gitlab::ImportExport
: 편리한 메서드를 제공하는 진입점-
lib/gitlab/import_export.rb
에 정의됨
-
-
Gitlab::ImportExport::UploadsSaver
: 업로드된 파일을 내보내기-
lib/gitlab/import_export/uploads_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::RepoSaver
: 리포지터리를 내보내기-
lib/gitlab/import_export/repo_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::WikiRepoSaver
: 위키 리포지터리를 내보내기-
lib/gitlab/import_export/wiki_repo_saver.rb
에 정의됨
-
-
EE:Gitlab::ImportExport::WikiRepoSaver
: 위키 리포지터리를 내보내기-
ee/lib/ee/gitlab/import_export/wiki_repo_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::LfsSaver
: LFS 객체 및 파일을 내보내기-
lib/gitlab/import_export/lfs_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::SnippetsRepoSaver
: 스니펫 리포지터리를 내보내기-
lib/gitlab/import_export/snippet_repo_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::DesignRepoSaver
: 디자인 리포지터리를 내보내기-
lib/gitlab/import_export/design_repo_saver.rb
에 정의됨
-
-
Gitlab::ImportExport::Error
: 사용자 정의 오류 객체-
lib/gitlab/import_export/error.rb
에 정의됨
-
-
Gitlab::ImportExport::AfterExportStrategyBuilder
: 내보내기가 완료된 후 실행할 콜백 역할-
lib/gitlab/import_export/after_export_strategy_builder.rb
에 정의됨
-
-
Gitlab::Export::Logger
: 내보내기 중에 사용되는 로거-
lib/gitlab/export/logger.rb
에 정의됨
-
-
Gitlab::ImportExport::LogUtil
: 로그 메시지 작성-
lib/gitlab/import_export/log_util.rb
에 정의됨
-
-
Gitlab::ImportExport::AfterExportStrategies::CustomTemplateExportImportStrategy
: 내보낸 후 템플릿 가져오기를 위한 콜백 클래스-
ee/lib/ee/gitlab/import_export/after_export_strategies/custom_template_export_import_strategy.rb
에 정의됨
-
-
Gitlab::TemplateHelper
: 템플릿 가져오기를 위한 도우미-
lib/gitlab/template_helper.rb
에 정의됨
-
-
ImportExportUpload
: 가져오고 내보내기 아카이브 파일을 저장-
app/models/import_export_upload.rb
에 정의됨
-
-
Gitlab::ImportExport::AfterExportStrategies::BaseAfterExportStrategy
: 기본 내보낸 후 전략-
lib/gitlab/import_export/after_export_strategies/base_after_export_strategy.rb
에 정의됨
-
-
RepositoryImportWorker
: 가져오기 단계를 트리거하는 워커-
app/workers/repository_import_worker.rb
에 정의됨
-
-
EE::RepositoryImportWorker
: 리포지터리 가져오기 워커 확장-
ee/app/workers/ee/repository_import_worker.rb
에 정의됨
-
-
Projects::ImportService
: 가져오기 단계를 실행-
app/services/projects/import_service.rb
에 정의됨
-
-
EE:Projects::ImportService
: 가져오기 서비스 확장-
ee/app/services/ee/projects/import_service.rb
에 정의됨
-
-
Projects::LfsPointers::LfsImportService
: LFS 객체 가져오기-
app/services/projects/lfs_pointers/lfs_import_service.rb
에 정의됨
-
-
Projects::LfsPointers::LfsObjectDownloadListService
: LFS 객체를 다운로드할 링크 요청하는 주요 서비스-
app/services/projects/lfs_pointers/lfs_object_download_list_service.rb
에 정의됨
-
-
Projects::LfsPointers::LfsDownloadLinkListService
: 링크를 요청하고 디렉터리을 빌드하는 서비스-
app/services/projects/lfs_pointers/lfs_download_link_list_service.rb
에 정의됨
-
-
Projects::LfsPointers::LfsListService
: LFS blob 포인터 검색-
app/services/projects/lfs_pointers/lfs_list_service.rb
에 정의됨
-
-
Projects::LfsPointers::LfsDownloadService
: LFS 객체를 다운로드하고 연결-
app/services/projects/lfs_pointers/lfs_download_service.rb
에 정의됨
-
-
Gitlab::ImportSources
: 어떤 import를 사용할지 구성하기 위한 모듈-
lib/gitlab/import_sources.rb
에 정의됨
-
-
EE::Gitlab::ImportSources
: import sources 확장-
ee/lib/ee/gitlab/import_sources.rb
에 정의됨
-
-
Gitlab::ImportExport::Importer
: Importer 클래스-
lib/gitlab/import_export/importer.rb
에 정의됨
-
-
EE::Gitlab::ImportExport::Importer
: Importer 확장-
ee/lib/ee/gitlab/import_export/importer.rb
에 정의됨
-
-
Gitlab::ImportExport::FileImporter
: 아카이브 파일 가져오기-
lib/gitlab/import_export/file_importer.rb
에 정의됨
-
-
Gitlab::ImportExport::DecompressedArchiveSizeValidator
: 아카이브 파일 크기 유효성 검사기-
lib/gitlab/import_export/decompressed_archive_size_validator.rb
에 정의됨
-
-
Gitlab::ImportExport::VersionChecker
: 내보낸 버전을 수입인과 일치하는지 확인-
lib/gitlab/import_export/version_checker.rb
에 정의됨
-
-
Gitlab::ImportExport::Project::TreeRestorer
: 프로젝트 및 관련 객체 가져오기를 처리-
lib/gitlab/import_export/project/tree_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::Json::NdjsonReader
: JSON 내보내기 파일에 대한 리더-
lib/gitlab/import_export/json/ndjson_reader.rb
에 정의됨
-
-
Gitlab::ImportExport::AvatarRestorer
: 아바타 파일 가져오기-
lib/gitlab/import_export/avatar_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::RepoRestorer
: 리포지터리 가져오기-
lib/gitlab/import_export/repo_restorer.rb
에 정의됨
-
-
EE:Gitlab::ImportExport::RepoRestorer
: 리포지터리 복원기 확장-
ee/lib/ee/gitlab/import_export/repo_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::DesignRepoRestorer
: 디자인 리포지터리 복원-
lib/gitlab/import_export/design_repo_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::UploadsRestorer
: 업로드된 파일 복원-
lib/gitlab/import_export/uploads_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::LfsRestorer
: LFS 객체 복원-
lib/gitlab/import_export/lfs_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::SnippetsRepoRestorer
: 스니펫 리포지터리 복원-
lib/gitlab/import_export/snippets_repo_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::SnippetRepoRestorer
: 개별 스니펫 복원-
lib/gitlab/import_export/snippet_repo_restorer.rb
에 정의됨
-
-
Snippets::RepositoryValidationService
: 스니펫 리포지터리 아카이브 유효성 검사-
app/services/snippets/repository_validation_service.rb
에 정의됨
-
-
Snippets::UpdateStatisticsService
: 스니펫 리포지터리를 위한 통계 업데이트-
app/services/snippets/update_statistics_service.rb
에 정의됨
-
-
Gitlab::BackgroundMigration::BackfillSnippetRepositories
: 해시된 리포지터리에서 누락된 스니펫을 보충-
lib/gitlab/background_migration/backfill_snippet_repositories.rb
에 정의됨
-
-
Gitlab::ImportExport::StatisticsRestorer
: 프로젝트 통계 새로 고침-
lib/gitlab/import_export/importer.rb
에 정의됨
-
-
Gitlab::ImportExport::Project::CustomTemplateRestorer
: 사용자 정의 템플릿을 위한 추가 가져오기-
ee/lib/gitlab/import_export/project/custom_template_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::Project::ProjectHooksRestorer
: 프로젝트 후크 가져오기를 처리-
ee/lib/gitlab/import_export/project/project_hooks_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::Project::DeployKeysRestorer
: 배포 키 가져오기를 처리-
ee/lib/gitlab/import_export/project/deploy_keys_restorer.rb
에 정의됨
-
-
Gitlab::ImportExport::Project::CustomTemplateRestorerHelper
: 사용자 정의 템플릿 복원기 위한 도우미-
ee/lib/gitlab/import_export/project/custom_template_restorer_helper.rb
에 정의됨
-