맞춤형 그룹 수준 프로젝트 템플릿 개발 지침
이 문서는 기여자들이 맞춤형 그룹 수준 프로젝트 템플릿의 코드 설계를 이해하는 데 도움을 주기 위해 작성되었습니다.
이 기능의 코드에 변경을 가하기 전에 이 문서를 읽어야 합니다.
이 문서는 코드가 자주 변경될 수 있음을 감안하여 코드 설계의 개요로 intentionally 제한되어 있습니다.
기능의 특정 부분이 어떻게 작동하는지 이해하려면 코드를 보고 사양을 참조하세요.
여기에서는 템플릿 기능의 주요 구성 요소가 어떻게 작동하는지 설명합니다.
기본 개요
맞춤형 그룹 수준 프로젝트 템플릿은 내보내진 후 새로 생성된 프로젝트로 가져오는 일반 프로젝트입니다.
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
: create 서비스의 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 블롭 포인터를 검색합니다.-
app/services/projects/lfs_pointers/lfs_list_service.rb
에 정의됨.
-
-
Projects::LfsPointers::LfsDownloadService
: LFS 개체를 다운로드하고 연결합니다.-
app/services/projects/lfs_pointers/lfs_download_service.rb
에 정의됨.
-
-
Gitlab::ImportSources
: 어떤 가져오기 도구를 사용할지 구성하는 모듈입니다.-
lib/gitlab/import_sources.rb
에 정의됨.
-
-
EE::Gitlab::ImportSources
: 가져오기 소스를 확장합니다.-
ee/lib/ee/gitlab/import_sources.rb
에 정의됨.
-
-
Gitlab::ImportExport::Importer
: 가져오기 클래스입니다.-
lib/gitlab/import_export/importer.rb
에 정의됨.
-
-
EE::Gitlab::ImportExport::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
에 정의됨.
-