1 - GitLab 역할 및 권한
1.1 그룹(그룹 구성원 동작 권한)
- 관리자는 다양한 그룹을 생성하고 각 그룹의 소유자(Owner)를 지정합니다
- Owner는 그룹 구성원을 추가하고, 그룹 내 프로젝트를 생성하며, 프로젝트 담당자를 지정할 수 있습니다
- 프로젝트 담당자는 프로젝트 구성원을 추가하고 해당 역할 수준을 설정할 수 있습니다
그룹 내 역할 및 권한
- 게스트(Guest): 이슈 생성 및 댓글 작성 가능, 코드 저장소 읽기/쓰기 불가
- 보고자(Reporter): QA, PM 등, 코드 복제 가능, 커밋 불가
- 개발자(Developer): RD, 코드 복제, 개발, 커밋, 푸시 가능
- 마스터(Master): 핵심 RD 책임자, Master 브랜치 관리, 프로젝트 생성, 태그 추가, 브랜치 보호, 구성원 추가, 프로젝트 편집 가능
- 소유자(Owner): RD 리더, 프로젝트 가시성 설정, 프로젝트 삭제/이전, 그룹 구성원 관리 가능
1.2 프로젝트(가시성, 프로젝트 접근 권한)
- 비공개(Private): 프로젝트 구성원만 코드를 확인하고 가져올 수 있음
- 내부(Internal): 로그인한 모든 사용자가 코드를 확인하고 가져올 수 있음
- 공개(Public): 누구나 코드를 확인하고 가져올 수 있음
2 - 그룹 및 프로젝트 생성
2.1 그룹 생성
관리자 계정만 그룹을 생성할 수 있으며, 기본적으로 비공개 그룹으로 생성되고 관리자가 Owner가 됩니다.
2.2 프로젝트 생성
그룹 페이지에서 "새 프로젝트"를 클릭하면 세 가지 생성 방법이 제공됩니다:
- 빈 프로젝트: 새로운 빈 프로젝트 생성
- 템플릿에서 프로젝트 생성: 템플릿 기반 프로젝트 생성
- 프로젝트 가져오기: 다른 코드 저장소에서 프로젝트 가져오기
빈 프로젝트 생성을 예로 들면:
3 - 로컬 Git 설정
3.1 연결 인증
중요: GitLab을 통한 연결 인증이 완료되어야만 코드를 가져오고 제출할 수 있습니다
GitLab은 기본적으로 SSH와 HTTP 두 가지 방식으로 코드를 가져옵니다:
- SSH: 일반적인 로컬 개발 환경의 SSH 공개 키를 GitLab 사용자 설정에 복사하면 사용자 이름과 비밀번호 입력이 필요 없습니다
- HTTP 방식: 사용자 이름과 비밀번호를 직접 사용하지만, 매번 다시 입력해야 합니다
# SSH 키 생성 예시
ssh-keygen -t rsa -C "your_email@example.com" -b 4096
# 생성된 공개 키 확인
cat ~/.ssh/id_rsa.pub
3.2 README 파일 추가
프로젝트 인터페이스에서 안내에 따라 README 파일을 추가하면 왼쪽에 "저장소" 기능이 나타납니다.
3.3 보호된 브랜치
새로 생성된 프로젝트는 기본적으로 master 브랜치를 "보호된 브랜치"로 설정하며, 프로젝트 Owner와 Master만이 보호된 브랜치에 직접 코드를 커밋할 수 있습니다.
- 후기 프로젝트 개발 시 일반적인 Develop 브랜치를 생성하여 Developer 역할로 코드를 커밋할 수 있습니다
- merge request를 생성하고 프로젝트 Owner와 Master가 코드 검토를 마친 후 master 브랜치로 코드를 병합합니다
- 브랜치를 생성할 때는 반드시 브랜치 이름, 어떤 브랜치에서, 태그 또는 특정 커밋 번호로부터 생성할지 지정해야 합니다
4 - 로컬 프로젝트 Git 설정
4.1 명령줄 안내
프로젝트 페이지의 "명령줄 안내" 섹션에서 설정 방법을 확인할 수 있습니다.
# Git 전역 설정
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
# 새 저장소 생성
git clone http://gitlab-server/group-name/project-name.git
cd project-name
touch README.md
git add README.md
git commit -m "Initial commit"
git push -u origin master
# 기존 폴더 푸시
cd existing_folder
git init
git remote add origin http://gitlab-server/group-name/project-name.git
git add .
git commit -m "Initial commit"
git push -u origin master
# 기존 Git 저장소 푸시
cd existing_repo
git remote rename origin old-origin
git remote add origin http://gitlab-server/group-name/project-name.git
git push -u origin --all
git push -u origin --tags
4.2 로컬 Git 사용자 설정 예시
# Git 사용자 정보 설정
git config --global user.name "developer_name"
git config --global user.email "developer@example.com"
# 현재 설정 확인
git config --list
4.3 코드 가져오기 및 제출 예시
# 프로젝트 클론
git clone http://gitlab-server/group-name/project-name.git
# 파일 수정 후
cd project-name
echo "새로운 내용" >> README.md
# 상태 확인
git status
# 변경 사항 추가
git add .
# 커밋
git commit -m "커밋 메시지"
# 원격 저장소에 푸시
git push -u origin master
5 - 프로젝트 Webhook 설정
GitLab 코드 저장소에 Webhook 및 해당 트리거 이벤트를 설정합니다.
- 저장소 인터페이스 → 설정 → Webhook 설정 페이지에서 URL을 입력하고 트리거를 선택한 후 "Webhook 추가"를 클릭하여 완료합니다
- 관리자 인터페이스 → 설정 → 네트워크 → 아웃바운드 요청 → "Webhook 및 통합에서 로컬 네트워크로의 요청 허용"을 선택 → 설정 저장
- 저장소 인터페이스 → 설정 → Webhook 설정 페이지 하단에서 추가된 Webhook의 시뮬레이션 트리거를 확인하고, 시뮬레이션 트리거된 webhook의 데이터 유형 및 구조를 볼 수 있습니다