- 시작하기 전에
engineering
그룹 생성engineering
에서 서브그룹 생성- 서브그룹에 사용자 추가
- Excelsior 프로젝트 생성
- 기본 CODEOWNERS 파일 추가
- 승인 규칙 구성
- 브랜치에서 CODEOWNER 승인 강제
- 릴리스 브랜치 생성하기
튜토리얼: 프로젝트를 위한 보호된 워크플로 구축
팀이 새 프로젝트를 시작할 때에는 효율성과 적절한 리뷰를 균형있게 고려한 워크플로가 필요합니다. GitLab에서는 사용자 그룹을 생성하고 해당 그룹을 브랜치 보호에 결합한 다음, 승인 규칙으로 해당 보호 정책을 시행할 수 있습니다.
이 튜토리얼에서는 “Excelsior”라는 예제 프로젝트의 1.x
및 1.x.x
릴리스 브랜치에 대한 보호를 설정하고, 프로젝트에 대한 최소한의 승인 워크플로를 만듭니다:
engineering
그룹 생성engineering
에서 서브그룹 생성- 서브그룹에 사용자 추가
- Excelsior 프로젝트 생성
- 기본 CODEOWNERS 파일 추가
- 승인 규칙 구성
- 브랜치에서 CODEOWNER 승인 시행
- 릴리스 브랜치 생성
시작하기 전에
- 유지보수자 또는 소유자 권한이 있어야 합니다.
- 관리자 및 이메일 주소 목록이 필요합니다.
- 백엔드 및 프론트엔드 엔지니어 목록과 이메일 주소 목록이 필요합니다.
- 브랜치 이름에 대한 의미론적 버전 관리를 이해해야 합니다.
engineering
그룹 생성
Excelsior 프로젝트를 설정하기 전에 프로젝트를 소유할 그룹을 만들어야 합니다. 여기서는 Engineering 그룹을 설정합니다:
- 왼쪽 사이드바에서 위쪽에 있는 새로 만들기 () 및 새 그룹을 선택합니다.
- 그룹 만들기를 선택합니다.
-
그룹 이름에
Engineering
을 입력합니다. -
그룹 URL에
engineering
을 입력합니다. - 가시성 수준을 비공개로 설정합니다.
- GitLab이 가장 유용한 정보를 표시할 수 있도록 개인화하세요:
- 역할에서 시스템 관리자를 선택합니다.
- 이 그룹을 사용할 대상에서 내 회사 또는 팀을 선택합니다.
- 이 그룹을 사용하려는 목적에서 내 코드를 저장하려고 합니다를 선택합니다.
- 이 그룹에 멤버를 초대하는 단계는 건너뜁니다. 이 튜토리얼의 나중 단계에서 사용자를 추가할 예정입니다.
- 그룹 만들기를 선택합니다.
그 다음, 이 engineering
그룹에 더 세부적인 제어를 위해 서브그룹을 추가할 것입니다.
engineering
에서 서브그룹 생성
engineering
그룹은 좋은 시작입니다만, Excelsior 프로젝트의 백엔드 엔지니어, 프론트엔드 엔지니어 및 관리자들은 서로 다른 작업과 특화된 영역을 가지고 있습니다.
여기서는 Engineering 그룹 내에서 세부적으로 백엔드, 프론트엔드 및 관리자 서브그룹을 만들어 작업 유형에 따라 사용자를 분류한 다음, 이러한 새 그룹을 engineering
그룹의 구성원으로 추가할 것입니다.
먼저, 새로운 서브그룹을 만듭니다:
-
왼쪽 사이드바에서 검색 또는 이동을 선택하고
engineering
을 검색합니다.Engineering
이라는 그룹을 선택합니다. -
engineering
그룹의 개요 페이지에서 오른쪽 상단에 새 서브그룹을 선택합니다. -
서브그룹 이름에
Managers
를 입력합니다. - 가시성 수준을 비공개로 설정합니다.
- 서브그룹 만들기를 선택합니다.
다음으로, 서브그룹을 engineering
그룹의 구성원으로 추가합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
engineering
을 검색합니다.Engineering
이라는 그룹을 선택합니다. - 관리 > 구성원을 선택합니다.
- 오른쪽 상단에서 그룹 초대를 선택합니다.
-
초대할 그룹 선택에
Engineering / Managers
를 선택합니다. - 서브그룹을 추가할 때 Maintainer 역할을 선택합니다. 이렇게 하면 서브그룹의 구성원이
engineering
그룹 및 해당 프로젝트에 액세스할 때 상속할 수 있는 가장 높은 역할로 설정됩니다. - 선택 사항. 만료일을 선택합니다.
- 초대를 선택합니다.
backend
및 frontend
에 대해서도 동일한 프로세스를 반복합니다. 완료되면 engineering
그룹을 한 번 더 검색하세요. 개요 페이지에는 다음과 같이 세 개의 서브그룹이 표시되어야 합니다:
서브그룹에 사용자 추가
이전 단계에서 서브그룹을 (engineering
그룹)의 구성원으로 추가할 때, 이들의 역할을 Maintainer로 제한했습니다. 이는 이들이 engineering
이 소유한 프로젝트에 상속할 수 있는 가장 높은 역할이 됩니다. 결과적으로:
- 사용자 1은
manager
서브그룹에 Guest 역할로 추가되어engineering
프로젝트에 Guest 역할을 받습니다. - 사용자 2는
manager
그룹에 소유자 역할로 추가됩니다. 이 역할은 설정한 최대 역할(Maintainer)보다 높기 때문에 사용자 2는 소유자 대신 Maintainer 역할을 받습니다.
frontend
서브그룹에 사용자를 추가하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
frontend
를 검색합니다.Frontend
그룹을 선택합니다. - 관리 > 구성원을 선택합니다.
- 구성원 초대를 선택합니다.
- 필드를 작성합니다. 기본적으로 Developer 역할을 선택하고, 다른 사람의 작업을 검토하는 경우 Maintainer로 역할을 높입니다.
- 초대를 선택합니다.
- 모든 프론트엔드 엔지니어를
frontend
서브그룹에 추가할 때까지 이러한 단계를 반복합니다.
이제 backend
및 managers
그룹에도 동일한 작업을 수행합니다. 동일한 사용자가 여러 서브그룹의 구성원일 수 있습니다.
Excelsior 프로젝트 생성
이제 그룹 구조가 마련되었으므로 팀이 작업할 excelsior
프로젝트를
생성하세요. 프론트엔드 및 백엔드 엔지니어가 모두 참여하기 때문에 excelsior
는
만들어진 작은 하위 그룹 중 어떤 것이 아니라 engineering
에 속해야 합니다.
새 excelsior
프로젝트를 생성하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
engineering
을 검색합니다.Engineering
이라는 그룹을 선택합니다. -
engineering
그룹의 개요 페이지에서 왼쪽 사이드바 상단에 있는 새로 만들기()를 선택하고 이 그룹 > 새 프로젝트/저장소를 선택합니다. - 빈 프로젝트 만들기를 선택합니다.
- 프로젝트 세부 정보를 입력합니다:
-
프로젝트 이름 필드에
Excelsior
를 입력합니다. 프로젝트 슬러그는excelsior
로 자동으로 채워집니다. - 가시성 레벨에서 공개를 선택합니다.
- README로 리포지토리 초기화를 선택하여 리포지토리에 초기 파일을 추가합니다.
-
프로젝트 이름 필드에
- 프로젝트 생성을 선택합니다.
GitLab은 excelsior
프로젝트를 생성하고 해당 홈페이지로 리디렉션합니다.
다음과 같이 보여야 합니다:
다음 단계에서 이 페이지의 기능을 사용하게 될 것입니다.
기본 CODEOWNERS 파일 추가
프로젝트의 루트 디렉토리에 CODEOWNERS 파일을 추가하여 리뷰를 올바른 하위 그룹으로 경로 지정하세요. 이 예제는 네 가지 규칙을 설정합니다:
- 모든 변경 사항은
engineering
그룹의 누군가에 의해 리뷰되어야 합니다. - 매니저는 CODEOWNERS 파일 자체에 대한 모든 변경 사항을 검토해야 합니다.
- 프론트엔드 엔지니어는 프론트엔드 파일의 변경 사항을 검토해야 합니다.
- 백엔드 엔지니어는 백엔드 파일의 변경 사항을 검토해야 합니다.
참고: GitLab Free는 선택적 리뷰만 지원합니다. 리뷰를 필수로 만들려면 GitLab Premium 또는 Ultimate이 필요합니다.
excelsior
프로젝트에 CODEOWNERS 파일을 추가하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
를 검색합니다.Excelsior
이라는 프로젝트를 선택합니다. - 브랜치 이름 옆에서 플러스 아이콘()을 선택한 다음 새 파일을 선택합니다:
-
파일 이름에
CODEOWNERS
를 입력합니다. 이렇게 하면 프로젝트의 루트 디렉토리에CODEOWNERS
라는 파일이 생성됩니다. -
수정 영역에 다음 예제를 붙여넣고, 그룹 구조와 일치하지 않으면
@engineering/
를 변경합니다:# 모든 변경 사항은 engineering 그룹의 누군가에 의해 리뷰되어야 합니다 * @engineering # 매니저는 이 파일에 대한 모든 변경 사항을 검토해야 합니다 CODEOWNERS @engineering/managers # 프론트엔드 파일은 FE 엔지니어들이 검토해야 합니다 [Frontend] @engineering/frontend *.scss *.js # 백엔드 파일은 BE 엔지니어들이 검토해야 합니다 [Backend] @engineering/backend *.rb
-
커밋 메시지에 다음 항목을 붙여넣습니다:
새 CODEOWNERS 파일 추가 다음을 위해 작은 CODEOWNERS 파일을 생성합니다: - 백엔드 및 프론트엔드 변경 사항을 올바른 팀으로 경로 지정 - CODEOWNERS 파일 변경 사항을 매니저에 경로 지정 - 모든 변경 사항에 리뷰 요청
- 변경 사항 커밋을 선택합니다.
CODEOWNERS 파일은 이제 excelsior
프로젝트의 main
브랜치에 있으며,
이 프로젝트에서 생성된 모든 미래 브랜치에서 사용할 수 있습니다.
승인 규칙 구성
CODEOWNERS 파일은 디렉터리 및 파일 유형에 대한 적절한 리뷰어를 설명합니다. 승인 규칙은 해당 리뷰어로 병합 요청을 보냅니다. 여기서 새 CODEOWNERS 파일의 정보를 사용하여 승인 규칙을 설정하고 릴리스 브랜치에 대한 보호 기능을 추가할 것입니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
을 검색합니다.Excelsior
이라는 프로젝트를 선택합니다. - 설정 > 병합 요청을 선택합니다.
- 병합 요청 승인 섹션에서 승인 규칙로 스크롤합니다.
- 승인 규칙 추가를 선택합니다.
-
Enforce CODEOWNERS
라는 규칙을 생성합니다. - 모든 보호된 브랜치를 선택합니다.
- GitLab Premium 및 GitLab Ultimate에서는 승인 필요 수를
1
로 설정하여 이 규칙을 필수로 만듭니다. -
managers
그룹을 승인자로 추가합니다. - 승인 규칙 추가를 선택합니다.
- 승인 설정으로 스크롤하여 병합 요청에서 승인 규칙 편집 방지가 선택되었는지 확인합니다.
- 변경 사항 저장을 선택합니다.
추가되면 Enforce CODEOWNERS
규칙은 다음과 같이 보입니다:
브랜치에서 CODEOWNER 승인 강제
프로젝트의 여러 유형을 보호하기 위해 여러 가지 보호 기능을 구성한 상태이고 이제 이러한 보호 기능을 결합하여 프로젝트의 중요한 브랜치를 안전하게 하려고 합니다:
- 사용자가 논리적인 그룹과 하위 그룹으로 분류되어 있습니다.
- CODEOWNERS 파일은 파일 유형 및 디렉토리에 대한 주제 전문가를 설명합니다.
- 귀하의 승인 규칙은(무료 버전의 GitLab의 경우) 주제 전문가가 변경 사항을 검토하도록 장려하거나 (GitLab Premium 및 GitLab Ultimate에서) 요구합니다.
귀하의 excelsior
프로젝트는 릴리스 브랜치 이름에 대해 의미 있는 버전
을 사용하므로 릴리스 브랜치는 1.x
및 1.x.x
와 같은 패턴을 따르는 것을 알 수 있습니다.
이러한 브랜치에 추가된 모든 코드는 주제 전문가에 의해 검토되어야 하며,
매니저가 무엇을 통합할지 최종적으로 결정해야 합니다.
한 번에 한 번 브랜치를 보호하기 위해 와일드카드 브랜치 규칙을 구성하는 대신 여러 브랜치를 보호하는 와일드카드 브랜치 규칙을 구성해보겠습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
을 검색합니다.Excelsior
이라는 프로젝트를 선택합니다. - 설정 > 저장소를 선택합니다.
- 보호된 브랜치를 확장합니다.
-
브랜치 드롭다운 목록에서
1.*
을 입력한 다음 와일드카드1.*
만들기를 선택합니다. - 커밋을 직접 푸시하는 대신 모든 사람이 병합 요청을 제출하도록 하려면:
- 병합 허용 대상을 관리자로 설정합니다.
- 푸시 및 병합 허용 대상을 아무도로 설정합니다.
- 강제 푸시 허용 대상을 비활성화합니다.
- GitLab Premium 및 GitLab Ultimate에서는 파일 작업에 대한 코드 소유자의 검토를 요구하려면 코드 소유자 승인 필요를 토글합니다.
- 보호를 선택합니다.
- 브랜치 표에서 규칙이
Default
로 표시된 항목을 찾습니다. (GitLab의 버전에 따라 이 브랜치의 이름은main
또는master
일 수 있습니다.) 이 브랜치에 대한 값을1.*
규칙에 사용한 설정과 일치하도록 설정합니다.
이제 룰이 있더라도 아직 1.*
브랜치가 존재하지는 않지만, 이렇게 설정된 것입니다:
릴리스 브랜치 생성하기
이제 모든 브랜치 보호가 완료되었으므로 1.0.0 릴리스 브랜치를 생성할 준비가 되었습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
를 검색합니다.Excelsior
라는 프로젝트를 선택합니다. - 코드 > 브랜치를 선택합니다.
- 오른쪽 상단에서 새 브랜치를 선택합니다.
1.0.0
으로 이름을 지정합니다. - 브랜치 생성을 선택합니다.
이제 브랜치 보호가 UI에서 확인됩니다:
-
왼쪽 사이드바에서 코드 > 브랜치를 선택합니다. 브랜치 목록에서
1.0.0
브랜치에 보호가 되어 있는 것을 확인할 수 있어야 합니다: -
왼쪽 사이드바에서 설정 > 저장소를 선택한 다음 브랜치 규칙을 펼쳐서 보호된 모든 브랜치에 대한 세부 정보를 확인할 수 있습니다:
축하합니다! 여러분의 엔지니어들은 자신의 기능 브랜치에서 독립적으로 작업할 수 있으며, 1.0.0 릴리스 브랜치에 대한 고려를 위해 제출된 모든 코드는 전문가들에 의해 검토될 것입니다.