기본 제공 프로젝트 템플릿에 기여하기
GitLab v19.4요약
GitLab은 새 프로젝트를 만들 때 사용할 수 있는 기본 제공 프로젝트 템플릿 을 제공합니다. 기본 제공 템플릿은 다음 그룹에서 가져옵니다: GitLab과 함께 배포되는 새 기본 제공 프로젝트 템플릿을 기여하려면 몇 가지 단계를 따라야 합니다.
GitLab은 새 프로젝트를 만들 때 사용할 수 있는 기본 제공 프로젝트 템플릿 을 제공합니다.
기본 제공 템플릿은 다음 그룹에서 가져옵니다:
사전 요구 사항:
- 동작하는 GitLab Development Kit(GDK) 환경이 있어야 합니다.
특히 PostgreSQL, Praefect,
sshd가 동작해야 합니다. wget이 설치되어 있어야 합니다.
새 기본 제공 프로젝트 템플릿 추가#
GitLab과 함께 배포되는 새 기본 제공 프로젝트 템플릿을 기여하려면 몇 가지 단계를 따라야 합니다.
프로젝트 생성#
- 원하는 네임스페이스에 기여할 프로젝트 콘텐츠를 담은 새 공개 프로젝트를 만듭니다. 실제 예시를 참고할 수 있습니다.
- 프로젝트에는 불필요한 자산이나 의존성이 없어야 합니다.
- 프로젝트가 검토받을 준비가 되면 프로젝트 링크를 담아 새 이슈를 생성합니다.
- 이슈에서 Create:Source Code 그룹의 담당 Backend Engineering Manager와 Product Manager를
@로 멘션합니다.
- 이슈에서 Create:Source Code 그룹의 담당 Backend Engineering Manager와 Product Manager를
gitlab-svgs에 로고 추가#
모든 템플릿은 gitlab-svgs 라이브러리에서
아이콘을 가져오므로, 추가하려는 템플릿의 아이콘이 없다면 아이콘을 먼저
제출해야 합니다.
서드 파티 로고 추가 방법을 참고합니다.
로고가 main 브랜치에 추가되면
봇이 새 릴리스를 감지해
gitlab-org/gitlab에 MR을 생성합니다. 이후 다음 단계로 진행할 수
있습니다.
템플릿 세부 정보 추가#
GitLab에서는 두 가지 유형의 기본 제공 템플릿을 사용할 수 있습니다:
- Standard 템플릿: 모든 GitLab 티어에서 사용할 수 있습니다.
- Enterprise 템플릿: GitLab Premium과 Ultimate에서만 사용할 수 있습니다.
새 프로젝트를 만들 때 해당 프로젝트 템플릿을 사용할 수 있게 하려면, 벤더링 절차에 따라 동작하는 템플릿을 만들어야 합니다.
Standard 템플릿#
예시는 머지 리퀘스트 25318을 참고합니다.
Standard 템플릿을 기여하려면 다음 단계를 수행합니다:
-
lib/gitlab/project_template.rb의localized_templates_table메서드에 다음 형식으로 템플릿 세부 정보를 추가합니다:ProjectTemplate.new('<template_name>', '<template_short_description>', _('<template_long_description>'), '<template_project_link>', 'illustrations/logos/<template_logo_name>.svg'), -
app/assets/javascripts/projects/default_project_templates.js에 템플릿 세부 정보를 추가합니다. -
spec/support/helpers/project_template_test_helper.rb에 템플릿 이름을 추가합니다.
Enterprise 템플릿#
예시는 머지 리퀘스트 28187을 참고합니다.
Enterprise 템플릿을 기여하려면 다음 단계를 수행합니다:
-
ee/lib/ee/gitlab/project_template.rb의localized_ee_templates_table메서드에 다음 형식으로 템플릿 세부 정보를 추가합니다:ProjectTemplate.new('<template_name>', '<template_short_description>', _('<template_long_description>'), '<template_project_link>', 'illustrations/logos/<template_logo_name>.svg'), -
ee/spec/lib/gitlab/project_template_spec.rb의let(:enterprise_templates)목록에 템플릿 이름을 추가합니다. -
ee/app/assets/javascripts/projects/default_project_templates.js에 템플릿 세부 정보를 추가합니다.
템플릿 세부 정보 채우기#
-
GDK를 시작합니다:
gdk start -
gitlab프로젝트에서 다음을 실행합니다.<template_name>은gitlab/project_template.rb에서 템플릿에 지정한 이름입니다:bin/rake "gitlab:update_project_templates[<template_name>]" -
gitlab프로젝트에서 현지화 파일을 다시 생성하고 새.pot파일을 커밋합니다:bin/rake gettext:regenerate -
커밋 메시지에 변경 로그 항목을 추가합니다(예:
Changelog: added). 자세한 내용은 변경 로그 항목을 참고합니다.
기존 기본 제공 프로젝트 템플릿 업데이트#
변경 사항을 기여하려면 다음 단계를 수행합니다:
-
해당 프로젝트에서 머지 리퀘스트를 열고, 검토받을 준비가 되면 다음 댓글을 남깁니다:
@gitlab-org/manage/import/backend this is a contribution to update the project template and is ready for review! @gitlab-bot ready -
머지 리퀘스트가 수락되면 다음 중 하나를 수행합니다:
-
이슈를 생성해 업데이트를 요청합니다.
-
또는 벤더링된 템플릿을 업데이트하고 머지 리퀘스트를 엽니다:
bin/rake "gitlab:update_project_templates[<template_name>]"
-
GitLab Development Kit으로 기본 제공 프로젝트 테스트#
자체 GDK 인스턴스에서 프로젝트 템플릿을 테스트하려면 다음 단계를 완료합니다:
-
GDK를 시작합니다:
gdk start -
다음 Rake 태스크를 실행합니다.
<template_name>은lib/gitlab/project_template.rb에 있는 템플릿 이름입니다:bin/rake "gitlab:update_project_templates[<template_name>]" -
브라우저에서 GitLab에 접속해 해당 프로젝트 템플릿을 선택하여 새 프로젝트를 만듭니다.
GitLab 팀 멤버를 위한 안내#
머지하기 전에 모든 머지 리퀘스트가 Security 담당자의 검토를 받았는지 확인합니다.
모든 템플릿 업데이트#
템플릿으로 프로젝트를 시작하려면 해당 프로젝트를 내보내야 합니다. 최신 상태의 기본 브랜치에서 다음을 실행합니다:
gdk start # postgres, praefect, and sshd are required
bin/rake gitlab:update_project_templates
git checkout -b update-project-templates
git add vendor/project_templates
git commit
git push -u origin update-project-templates
이제 머지 리퀘스트를 만들고 머지를 위해 Security 담당자에게 할당합니다.
단일 템플릿 업데이트#
전체가 아니라 단일 템플릿만 업데이트하려면 대괄호 안에 템플릿 이름을 지정합니다.
예를 들어 jekyll 템플릿이라면 다음을 실행합니다:
bin/rake "gitlab:update_project_templates[jekyll]"
템플릿 머지 리퀘스트 검토#
벤더링된 프로젝트 템플릿을 하나 이상 변경하는 머지 리퀘스트를 검토하려면
check-template-changes 스크립트를 실행합니다:
scripts/check-template-changes vendor/project_templates/<template_name>.tar.gz
이 스크립트는 기본 브랜치 대비 파일 변경 사항의 diff를 출력하고, 템플릿 리포지터리가 소스 템플릿 프로젝트와 일치하는지도 검증합니다.