- 시작하기 전에
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
그룹 내에서 더 세분화된 세 부그룹을 만들어 사용자를 그들의 작업 유형에 따라 분류할 것입니다: managers
, frontend
, backend
.
그런 다음 이러한 새 그룹을 engineering
그룹의 멤버로 추가할 것입니다.
먼저 새로운 하위 그룹을 생성합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
engineering
을 검색합니다.Engineering
그룹을 선택합니다. -
engineering
그룹 개요 페이지에서 오른쪽 상단에 새로운 하위 그룹을 선택합니다. -
하위 그룹 이름에
Managers
를 입력합니다. - 가시성 레벨을 비공개로 설정합니다.
- 하위 그룹 생성을 선택합니다.
그런 다음 하위 그룹을 engineering
그룹의 멤버로 추가합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
engineering
을 검색합니다.Engineering
그룹을 선택합니다. - 관리 > 멤버를 선택합니다.
- 오른쪽 위쪽에서 그룹 초대를 선택합니다.
-
초대할 그룹 선택에서
Engineering / Managers
를 선택합니다. - 하위 그룹을 추가할 때 유지 관리자 역할을 선택합니다.
이렇게 하면 하위 그룹의 구성원이
engineering
그룹 및 해당 프로젝트에 액세스할 때 상속할 수 있는 가장 높은 역할로 설정됩니다. - 선택 사항. 만료 날짜를 선택합니다.
- 초대를 선택합니다.
backend
및 frontend
의 경우 동일한 작업을 반복합니다. 완료했을 때 engineering
그룹을 다시 검색하면 이러한 새로운 하위 그룹 세 개가 표시됩니다.
하위 그룹에 사용자 추가
이전 단계에서 하위 그룹을 상위 그룹(engineering
)에 추가할 때 하위 그룹의 구성원을 유지 관리자 역할로 제한했습니다. 이것은 그들이 engineering
이 소유한 프로젝트에서 상속할 수 있는 가장 높은 역할입니다. 따라서:
- 사용자 1은 Manager 하위 그룹에 Guest 역할로 추가되며
engineering
프로젝트에서 Guest 역할을 받습니다. - 사용자 2는 Manager 그룹에 소유자 역할로 추가됩니다. 이 역할은 설정한 최대 역할인 유지 관리자보다 높으므로 사용자 2는 Owner가 아닌 Maintainer 역할을 받습니다.
frontend
하위 그룹에 사용자를 추가하려면:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
frontend
를 검색합니다.Frontend
그룹을 선택합니다. - 관리 > 멤버를 선택합니다.
- 멤버 초대를 선택합니다.
- 필드를 작성합니다. 기본적으로 개발자 역할을 선택하고 이 사용자가 다른 사람의 작업을 검토하는 경우 유지 관리자로 변경합니다.
- 초대를 선택합니다.
- 모든 프론트엔드 엔지니어를
frontend
하위 그룹에 추가할 때까지 이러한 단계를 반복합니다.
이제 backend
및 manager
그룹에도 동일한 작업을 수행합니다. 동일한 사용자가 여러 하위 그룹의 구성원이 될 수 있습니다.
Excelsior 프로젝트 생성
이제 그룹 구조가 갖추어졌으므로 팀이 작업할 excelsior
프로젝트를 만들어야 합니다. 프론트엔드 및 백엔드 엔지니어가 모두 참여하기 때문에 excelsior
는 새로 생성한 작은 하위 그룹 중 어느 것이 아닌 engineering
그룹에 속해야 합니다.
새 excelsior
프로젝트를 만드는 방법은 다음과 같습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
engineering
을 검색합니다.Engineering
그룹을 선택합니다. -
engineering
그룹 개요 페이지에서 왼쪽 사이드바 맨 위의 새로 만들기 () 및 이 그룹 내에서 > 새 프로젝트/저장소를 선택합니다. - 비어 있는 프로젝트 만들기를 선택합니다.
- 프로젝트 세부 정보를 입력합니다:
-
프로젝트 이름 필드에
Excelsior
를 입력합니다. 프로젝트 슬러그는excelsior
로 자동으로 채워집니다. - 가시성 레벨에서 공개를 선택합니다.
- README로 리포지토리 초기화를 선택하여 리포지토리에 초기 파일을 추가합니다.
-
프로젝트 이름 필드에
- 프로젝트 만들기를 선택합니다.
GitLab은 excelsior
프로젝트를 생성하고 해당 홈페이지로 리디렉션합니다. 다음 단계에서 이 페이지의 기능을 사용할 것입니다.
기본 CODEOWNERS 파일 추가
프로젝트의 루트 디렉토리에 CODEOWNERS 파일을 추가하여 리뷰를 적절한 하위 그룹으로 보내세요. 다음은 네 가지 규칙을 설정하는 예시입니다:
- 모든 변경 사항은
engineering
그룹의 누군가에 의해 리뷰되어야 합니다. - 코드 소유자 파일 자체에 대한 변경 사항은 매니저가 검토해야 합니다.
- 프론트엔드 엔지니어는 프론트엔드 파일에 대한 변경 사항을 검토해야 합니다.
- 백엔드 엔지니어는 백엔드 파일에 대한 변경 사항을 검토해야 합니다.
::NOTE:: 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 파일이 main
브랜치에 위치하고 있으며 이후에 만들어지는 모든 브랜치에서 사용할 수 있습니다.
승인 규칙 구성
CODEOWNERS 파일은 디렉토리 및 파일 유형에 대한 적절한 리뷰어를 설명합니다. 승인 규칙은 병합 요청을 해당 리뷰어에게 보내도록 지시합니다. 여기에서는 새로운 CODEOWNERS 파일의 정보를 사용하고 릴리스 브랜치를 위해 보호 기능을 추가하는 승인 규칙을 설정합니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
를 검색합니다.Excelsior
로 이름 지어진 프로젝트를 선택하세요. - 설정 > 병합 요청을 선택하세요.
- 병합 요청 승인 섹션에서 승인 규칙으로 스크롤하세요.
- 승인 규칙 추가를 선택하세요.
-
CODEOWNERS 적용
이라는 규칙을 만드세요. - 모든 보호된 브랜치를 선택하세요.
- GitLab Premium 및 GitLab Ultimate에서 승인을 필수로 만들려면 필요한 승인을
1
로 설정하세요. -
managers
그룹을 승인자로 추가하세요. - 승인 규칙 추가를 선택하세요.
- 승인 설정으로 스크롤하여 병합 요청에서 승인 규칙 편집 방지가 선택되어 있는지 확인하세요.
- 변경 사항 저장을 선택하세요.
추가된 CODEOWNERS 적용
규칙은 이미지와 같습니다:
브랜치에서 CODEOWNER 승인 적용
프로젝트에 대한 여러 보호 기능을 구성한 후 중요한 브랜치를 보호하기 위해 이러한 보호를 함께 결합할 준비가 되었습니다:
- 사용자는 논리적인 그룹과 하위 그룹으로 분류됩니다.
- CODEOWNERS 파일은 파일 유형 및 디렉토리에 대한 전문가를 설명합니다.
- 승인 규칙에서 GitLab Free에서는 전문가가 변경 사항을 검토하도록 유도하고(GitLab Premium 및 GitLab Ultimate에서는 필수로 만듬)합니다.
excelsior
프로젝트에서는 릴리스 브랜치 이름에 대해 의미 체계 버전을 사용하므로 릴리스 브랜치가 1.x
와 1.x.x
패턴을 따르는 것을 알고 있을 것입니다. 이러한 브랜치에 추가된 코드가 모두 전문가에 의해 검토되었으면 하며 매니저가 릴리스 브랜치로 병합할 작업을 최종 결정할 수 있기를 원합니다.
한 번에 한 개의 브랜치에 대해 보호를 생성하는 대신에 여러 브랜치를 보호하는 와일드카드 브랜치 규칙을 구성하세요:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
를 검색합니다.Excelsior
로 이름 지어진 프로젝트를 선택하세요. - 설정 > 저장소를 선택하세요.
- 보호된 브랜치를 확장하세요.
-
브랜치 드롭다운 목록에서
1.*
을 입력한 다음 와일드카드1.*
생성을 선택하세요. - 커밋을 직접 푸시하는 대신 모든 사람들이 병합 요청을 제출하도록 하려면:
- 병합 허용을 관리자로 설정하세요.
- 푸시 및 병합 허용을 아무도로 설정하세요.
- 강제로 푸시하는 것 허용을 비활성화하세요.
- GitLab Premium 및 GitLab Ultimate에서 코드 소유자가 자신이 작업하는 파일에 대한 변경 사항을 검토하도록 하려면 코드 소유자 승인 필요을 토글하세요.
- 보호를 선택하세요.
- 브랜치 테이블에서
기본
이라고 표시된 규칙을 찾으세요. (GitLab의 버전에 따라 브랜치 이름이main
또는master
로 지정될 수 있음.) 이 브랜치를 위한 값들을1.*
규칙에 사용한 설정과 일치하도록 설정하세요.
이제 1.*
브랜치가 아직 존재하지 않더라도 규칙이 적용됩니다:
릴리스 브랜치 생성
모든 브랜치 보호가 완료되었으므로 1.0.0
릴리스 브랜치를 만드는 준비가 되었습니다:
- 왼쪽 사이드바에서 검색 또는 이동을 선택하고
Excelsior
를 검색합니다.Excelsior
로 이름 지어진 프로젝트를 선택하세요. - 코드 > 브랜치를 선택하세요.
- 오른쪽 상단에서 새 브랜치를 선택하세요.
1.0.0
으로 이름을 지정하세요. - 브랜치 만들기를 선택하세요.
UI에서 브랜치 보호가 더욱 가시적입니다:
-
왼쪽 사이드바에서 코드 > 브랜치를 선택하세요. 브랜치 목록에서 브랜치
1.0.0
이 보호됨으로 표시되어야 합니다: -
왼쪽 사이드바에서 설정 > 저장소를 선택한 다음 브랜치 규칙을 확장하여 모든 보호된 브랜치에 대한 자세한 정보를 확인하세요:
축하합니다! 여러분의 엔지니어들은 각자의 브랜치에서 독립적으로 작업할 수 있으며 1.0.0 릴리스 브랜치에 대한 모든 제출 코드는 전문가에 의해 검토될 것입니다.