튜토리얼: 프로젝트를 위한 보호된 워크플로 구축
Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated
팀이 새 프로젝트를 시작할 때 효율성과 적절한 검토 사이의 균형을 맞추는 워크플로가 필요합니다. 이 튜토리얼은 "Excelsior"라는 예제 프로젝트의 1.x 및 1.x.x 릴리스 브랜치에 대한 보호를 설정하고 프로젝트를 위한 최소한의 승인 워크플로를 만듭니다:
팀이 새 프로젝트를 시작할 때 효율성과 적절한 검토 사이의 균형을 맞추는 워크플로가 필요합니다. GitLab에서 사용자 그룹을 만들고, 해당 그룹을 브랜치 보호와 결합한 다음, 승인 규칙으로 해당 보호를 시행할 수 있습니다.
이 튜토리얼은 "Excelsior"라는 예제 프로젝트의 1.x 및 1.x.x 릴리스 브랜치에 대한 보호를 설정하고 프로젝트를 위한 최소한의 승인 워크플로를 만듭니다:
engineering그룹 만들기engineering에 서브그룹 만들기- 서브그룹에 사용자 추가
- Excelsior 프로젝트 만들기
- 기본 CODEOWNERS 파일 추가
- 승인 규칙 구성
- 브랜치에 CODEOWNER 승인 시행
- 릴리스 브랜치 만들기
시작하기 전에#
- Maintainer 또는 Owner 역할이 있어야 합니다.
- 관리자 목록과 이메일 주소가 필요합니다.
- 백엔드 및 프론트엔드 엔지니어 목록과 이메일 주소가 필요합니다.
- 브랜치 이름에 대한 시맨틱 버전 관리를 이해해야 합니다.
engineering 그룹 만들기#
Excelsior 프로젝트를 설정하기 전에 프로젝트를 소유할 그룹을 만들어야 합니다. 여기에서 Engineering 그룹을 설정합니다:
- 오른쪽 상단에서 Create new(+)와 New group을 선택합니다.
- Create group을 선택합니다.
- Group name에
Engineering을 입력합니다. - Group URL에
engineering을 입력합니다. - Visibility level을 Private으로 설정합니다.
- GitLab이 가장 유용한 정보를 표시할 수 있도록 경험을 개인화합니다:
- Role에서 System administrator를 선택합니다.
- **Who will be using this group?**에서 My company or team을 선택합니다.
- **What will you use this group for?**에서 I want to store my code를 선택합니다.
- 그룹에 구성원 초대를 건너뜁니다. 이 튜토리얼의 이후 섹션에서 사용자를 추가합니다.
- Create group을 선택합니다.
다음으로 더 세분화된 제어를 위해 이 engineering 그룹에 서브그룹을 추가합니다.
engineering에 서브그룹 만들기#
engineering 그룹은 좋은 시작점이지만, Excelsior 프로젝트의 백엔드 엔지니어, 프론트엔드 엔지니어 및 관리자는 서로 다른 작업과 전문 분야를 가집니다.
여기에서 Engineering 그룹에 더 세분화된 서브그룹 세 개를 만들어 수행하는 작업 유형별로 사용자를 구분합니다: managers, frontend, backend. 그런 다음 이 새 그룹들을 engineering 그룹의 구성원으로 추가합니다.
먼저 새 서브그룹을 만듭니다:
-
상단 바에서 Search or go to를 선택하고
engineering을 검색합니다. -
Engineering이라는 그룹을 선택합니다:
-
engineering그룹 개요 페이지의 오른쪽 상단에서 Create subgroup을 선택합니다. -
Subgroup name에
Managers를 입력합니다. -
Visibility level을 Private으로 설정합니다.
-
Create subgroup을 선택합니다.
다음으로 서브그룹을 engineering 그룹의 구성원으로 추가합니다:
- 상단 바에서 Search or go to를 선택하고
engineering을 검색합니다. Engineering이라는 그룹을 선택합니다.- Manage > Members를 선택합니다.
- 오른쪽 상단에서 Invite a group을 선택합니다.
- Select a group to invite에서
Engineering / Managers를 선택합니다. - 서브그룹 추가 시 Maintainer 역할을 선택합니다. 이는 서브그룹 구성원이
engineering그룹 및 해당 프로젝트에 액세스할 때 상속받을 수 있는 최고 역할을 구성합니다. - 선택 사항. 만료일을 선택합니다.
- Invite를 선택합니다.
backend 및 frontend에 대한 서브그룹을 만들기 위해 이 과정을 반복합니다. 완료되면 engineering 그룹을 다시 검색합니다. 개요 페이지에 다음과 같이 세 개의 서브그룹이 표시되어야 합니다:

서브그룹에 사용자 추가#
이전 단계에서 서브그룹을 부모 그룹(engineering)에 추가할 때 서브그룹 구성원을 Maintainer 역할로 제한했습니다. 이 역할은 engineering이 소유한 프로젝트에 대해 상속받을 수 있는 최고 역할입니다. 결과적으로:
- 사용자 1이 Guest 역할로
manager서브그룹에 추가되면engineering프로젝트에서 Guest 역할을 받습니다. - 사용자 2가 Owner 역할로
manager그룹에 추가됩니다. 이 역할은 설정한 최대 역할(Maintainer)보다 높으므로 사용자 2는 Owner 대신 Maintainer 역할을 받습니다.
frontend 서브그룹에 사용자를 추가하려면:
- 상단 바에서 Search or go to를 선택하고
frontend를 검색합니다. Frontend그룹을 선택합니다.- Manage > Members를 선택합니다.
- Invite members를 선택합니다.
- 필드를 작성합니다. 기본적으로 Developer 역할을 선택하고, 이 사용자가 다른 사람의 작업을 검토한다면 Maintainer로 높입니다.
- Invite를 선택합니다.
- 모든 프론트엔드 엔지니어를
frontend서브그룹에 추가할 때까지 이 단계를 반복합니다.
backend 및 managers 그룹에도 동일하게 수행합니다. 동일한 사용자가 여러 서브그룹의 구성원이 될 수 있습니다.
Excelsior 프로젝트 만들기#
그룹 구조가 준비되었으므로 팀이 작업할 excelsior 프로젝트를 만듭니다. 프론트엔드 및 백엔드 엔지니어 모두 참여하므로 excelsior는 방금 만든 소규모 서브그룹이 아닌 engineering에 속해야 합니다.
새 excelsior 프로젝트를 만들려면:
- 상단 바에서 Search or go to를 선택하고
engineering을 검색합니다. Engineering이라는 그룹을 선택합니다.engineering그룹 개요 페이지의 오른쪽 상단에서 Create new(+)와 In this group > New project/repository를 선택합니다.- Create blank project를 선택합니다.
- 프로젝트 세부 정보를 입력합니다:
- Project name 필드에
Excelsior를 입력합니다. Project slug는 자동으로excelsior로 채워져야 합니다. - Visibility Level에서 Public을 선택합니다.
- Initialize repository with a README를 선택하여 저장소에 초기 파일을 추가합니다.
- Project name 필드에
- Create project를 선택합니다.
GitLab이 excelsior 프로젝트를 만들고 홈페이지로 리디렉션합니다. 다음과 같이 표시됩니다:

다음 단계에서 이 페이지의 기능을 사용합니다.
기본 CODEOWNERS 파일 추가#
프로젝트의 루트 디렉토리에 CODEOWNERS 파일을 추가하여 올바른 서브그룹으로 검토를 라우팅합니다. 이 예제는 네 가지 규칙을 설정합니다:
- 모든 변경 사항은
engineering그룹의 누군가가 검토해야 합니다. - CODEOWNERS 파일 자체에 대한 변경 사항은 관리자가 검토해야 합니다.
- 프론트엔드 파일에 대한 변경 사항은 프론트엔드 엔지니어가 검토해야 합니다.
- 백엔드 파일에 대한 변경 사항은 백엔드 엔지니어가 검토해야 합니다.
GitLab Free는 선택적 검토만 지원합니다. 검토를 필수로 만들려면 GitLab Premium 또는 Ultimate가 필요합니다.
excelsior 프로젝트에 CODEOWNERS 파일을 추가하려면:
-
상단 바에서 Search or go to를 선택하고
Excelsior를 검색합니다. -
Excelsior라는 프로젝트를 선택합니다. -
브랜치 이름 옆에서 더하기 아이콘(+)을 선택한 다음 New file을 선택합니다:

-
Filename에
CODEOWNERS를 입력합니다. 이렇게 하면 프로젝트의 루트 디렉토리에CODEOWNERS라는 파일이 만들어집니다. -
편집 영역에 이 예제를 붙여넣습니다. 그룹 구조와 일치하지 않으면
@engineering/을 변경합니다:# All changes should be reviewed by someone in the engineering group * @engineering # A manager should review any changes to this file CODEOWNERS @engineering/managers # Frontend files should be reviewed by FE engineers [Frontend] @engineering/frontend *.scss *.js # Backend files should be reviewed by BE engineers [Backend] @engineering/backend *.rb -
Commit message에 다음을 붙여넣습니다:
Adds a new CODEOWNERS file Creates a small CODEOWNERS file to: - Route backend and frontend changes to the right teams - Route CODEOWNERS file changes to managers - Request all changes be reviewed -
Commit changes를 선택합니다.
CODEOWNERS 파일이 이제 프로젝트의 main 브랜치에 있으며 이 프로젝트에서 만들어지는 모든 미래 브랜치에서 사용할 수 있습니다.
승인 규칙 구성#
CODEOWNERS 파일은 디렉토리 및 파일 유형에 대한 적절한 검토자를 설명합니다. 승인 규칙은 해당 검토자에게 머지 리퀘스트를 보냅니다. 여기에서 새 CODEOWNERS 파일의 정보를 사용하고 릴리스 브랜치에 대한 보호를 추가하는 승인 규칙을 설정합니다:
- 상단 바에서 Search or go to를 선택하고
Excelsior를 검색합니다. Excelsior라는 프로젝트를 선택합니다.- Settings > Merge requests를 선택합니다.
- Merge request approvals 섹션에서 Approval rules로 스크롤합니다.
- Add approval rule을 선택합니다.
Enforce CODEOWNERS라는 규칙을 만듭니다.- All protected branches를 선택합니다.
- GitLab Premium 및 GitLab Ultimate에서 규칙을 필수로 만들려면 Approvals required를
1로 설정합니다. managers그룹을 승인자로 추가합니다.- Add approval rule을 선택합니다.
- Approval settings로 스크롤하여 Prevent editing approval rules in merge requests가 선택되어 있는지 확인합니다.
- Save changes를 선택합니다.
추가되면 Enforce CODEOWNERS 규칙이 다음과 같이 표시됩니다:

브랜치에 CODEOWNER 승인 시행#
프로젝트에 대한 여러 보호 기능을 구성했으며 이제 이러한 보호 기능을 결합하여 프로젝트의 중요한 브랜치를 보호할 준비가 되었습니다:
- 사용자는 논리적인 그룹 및 서브그룹으로 정렬되었습니다.
- CODEOWNERS 파일은 파일 유형 및 디렉토리에 대한 전문가를 설명합니다.
- 승인 규칙은 (GitLab Free에서) 권장하거나 (GitLab Premium 및 GitLab Ultimate에서) 전문가가 변경 사항을 검토하도록 요구합니다.
excelsior 프로젝트는 릴리스 브랜치 이름에 시맨틱 버전 관리를 사용하므로 릴리스 브랜치가 1.x 및 1.x.x 패턴을 따른다는 것을 알고 있습니다. 이 브랜치에 추가되는 모든 코드는 전문가가 검토하고, 관리자가 릴리스 브랜치에 머지되는 작업에 대해 최종 결정을 내리도록 합니다.
브랜치별로 보호를 만드는 대신 와일드카드 브랜치 규칙을 구성하여 여러 브랜치를 보호합니다:
- 상단 바에서 Search or go to를 선택하고
Excelsior를 검색합니다. Excelsior라는 프로젝트를 선택합니다.- Settings > Repository를 선택합니다.
- Branch rules를 확장합니다.
- Add branch rule > Branch name or pattern을 선택합니다.
- 드롭다운 목록에서
1.*를 입력한 다음 **Create wildcard1.***를 선택합니다. - 커밋을 직접 푸시하는 대신 모든 사람이 머지 리퀘스트를 제출하도록 요구하려면:
- Allowed to merge 섹션에서 Edit를 선택하고 Maintainers로 설정한 다음 Save changes를 선택합니다.
- Allowed to push and merge 섹션에서 Edit를 선택하고 No one으로 설정한 다음 Save changes를 선택합니다.
- Allowed to force push는 비활성화된 상태로 둡니다.
- GitLab Premium 및 GitLab Ultimate에서 코드 소유자가 작업하는 파일에 대한 변경 사항을 검토하도록 요구하려면 Require approval from code owners를 토글합니다.
- 브랜치 테이블에서
Default로 표시된 규칙을 찾습니다. (GitLab 버전에 따라 이 브랜치는main또는master로 명명될 수 있습니다.) 이 브랜치에 대한 값을1.*규칙에 사용한 설정과 일치하도록 설정합니다.
1.* 브랜치가 아직 없더라도 규칙이 이제 적용됩니다:

릴리스 브랜치 만들기#
모든 브랜치 보호가 적용되었으므로 이제 1.0.0 릴리스 브랜치를 만들 준비가 되었습니다:
- 상단 바에서 Search or go to를 선택하고
Excelsior를 검색합니다. Excelsior라는 프로젝트를 선택합니다.- 왼쪽 사이드바에서 Code > Branches를 선택합니다.
- 오른쪽 상단에서 New branch를 선택합니다.
1.0.0으로 이름을 지정합니다. - Create branch를 선택합니다.
브랜치 보호가 이제 UI에서 표시됩니다:
-
왼쪽 사이드바에서 Code > Branches를 선택합니다. 브랜치 목록에서 브랜치
1.0.0이 보호됨을 표시해야 합니다:
-
왼쪽 사이드바에서 Settings > Repository를 선택한 다음 Branch rules를 확장하여 모든 보호된 브랜치에 대한 세부 정보를 봅니다:

축하합니다! 엔지니어들은 자신의 브랜치에서 독립적으로 작업할 수 있으며, 1.0.0 릴리스 브랜치 검토를 위해 제출된 모든 코드는 전문가가 검토합니다.
