프로젝트와 그룹 생성

gitlab 의 그룹은 사용자들과 프로젝트를 관리하기 위한 편리한 기능이다. gitlab 버전 5까지는 팀이라는 용어를 사용했으나 gitlab 6 부터는 팀 대신 그룹이라는 용어로 변경이 되었다.

그룹은 여러 프로젝트의 묶음이며 기본적으로 private 속성으로 생성된다. 그룹에 포함된 구성원은 할당된 프로젝트만 연결할 수 있다. gitlab 은 기본적으로 5개의 그룹을 제공하고 있으며 그룹의 기본 권한은 다음 표와 같다. 

프로젝트도 마찬가지로 권한 그룹을 생성할 수 있으며 5가지의 그룹별 권한을 제공한다. 프로젝트별 권한은 그룹별 권한에 비교하여 많이 복잡하다.

이제 Group을 생성해 보자. 대쉬보드에서 Groups 를 클릭한 후에 New Group 을 클릭하면 새로운 그룹을 만들수 있다.  

Group Name 에 생성할 그룹명을 적고 Details 에는 어떤 그룹인지 자세히 기술하는 내용을 입력한후에 Create Group 을 클릭하면 생성이 완료된다.

 

Project 생성

이제 git 프로젝트를 생성해 보자. git 프로젝트는 subversion 과 동일한 spring web 프로젝트이며 프로젝트명은 demo-webapp 이다. 대쉬보드에서 New Project 를 클릭하여 새로운 프로젝트를 생성하는 화면이 펼쳐진다.

Project Name 에 프로젝트의 이름을 설정하고 NameSpace 버튼을 클릭하면 Groups 밑에 SpringWebDevel 그룹이 표시되고 Users 밑에 이름이 표시된다. 두 개의 차이점은 생성된 git 프로젝트의 URL 의 리소스 항목이 사용자명이 되는지 그룹명이 되는지이다. 로그인명이 lesstif 일 경우 저장소 URL 은 다음과 같다.

  • 로그인명 선택시 git 프로젝트의 URL  : git@gitlab.example.com:lesstif/demo-webapp.git
  • SpringWebDevel  선택시 git 프로젝트의 URL : git@gitlab.example.com:springwebdevel/demo-webapp.git

    NameSpace 메뉴는 그룹의 소유자에게만 표시되며 일반 사용자가 프로젝트 생성시 해당 메뉴는 표시되지 않으며 자동으로 개인 계정에 프로젝트 저장소가 생성된다.

기능상의 차이는 없고 URL 만 차이나므로 선호도에 맞게 설정하면 된다. 개인적으로는 Groups 명을 저장소 URL 에 넣는 것을 선호한다.

URL의 마지막은 프로젝트명에 .git 을 자동으로 부여하여 생성된다. 혹시 프로젝트명과 최종 저장소명을 달리 하고 싶은 경우 Customize repository name? 을 선택하고 선호하는 저장소 이름을 넣어도 되지만 일반적으로는 프로젝트명을 저장소명으로 사용한다.

외부에 있는 git 저장소에서 프로젝트를 가져올 필요가 있는 경우 Import existing repository? 를 선택하면 git 저장소의 URL 을 입력하는 창이 표시되며 여기에 프로젝트의 URL 을 입력하면 가져올 수 있다. 예로 github 의 예제 프로젝트인 Spoon-Knife 를 import 하려면 URL 에 다음 주소를 넣으면 된다.

    git@github.com:octocat/Spoon-Knife.git

git 저장소 프로젝트가 프라이비트라 인증이 필요한 경우 다음과 같이 사용자ID와 암호를 넣어서 인증을 거쳐서 프로젝트를 가져올 수 있다.
    https://username:password@github.com/wikibook/linux-book.git 

마지막 설정 항목인 Visibility Level  은 프로젝트의 접근 권한을 설정한다. 기본값인 Private 는 명시적으로 지정된 사용자들만 접근이 가능하다. 두 번때 Internal은 gitlab 에 로그인한 사용자들만 접근이 가능하며 마지막 Public 은 로그인하지 않았어도 프로젝트를 clone 할 수 있다.

이제 모든 설정을 마치고 Create Project 를 클릭하면 프로젝트가 생성이 되며 완료되면 저장소 설정을 위한 git 명령어 안내 화면으로 자동으로 이동한다.

 

위 정보를 참조하여 local 에 git 저장소를 만들고 소스를 추가하면 저장소에 push/pull 을 수행할 수 있다. 예제 소스를 gitlab 저장소에 추가해 보자.

  1. 예제 소스를 다운받은 후에 특정 폴더에 압축을 해제한다. (c:\project\demo-webapp 에 해제했다고 가정한다)
  2. git 저장소를 초기화한다.
    git init 
  3. pom.xml 과 src 폴더를 저장소에 추가한다.
    git add src pom.xml  
  4. 변경 내역을 커밋한다.
    git commit -m "최초 커밋" 
  5. gitlab  원격 저장소를 추가한다.
     git remote add origin git@gitlab.example.com:lesstif/demo-webapp.git
  6. 로컬 저장소의 변경 내역을 원격 저장소에 푸쉬한다.
    git push -u origin master 

 

이제 최초 코드가 프로젝트에 등록되었다. 같이 프로젝트를 수행할 구성원을 추가해 보자.

 

프로젝트에 구성원 추가

프로젝트의 Settings 메뉴를 클릭하고 좌측의 Members 메뉴를 통해 구성원을 추가할 수 있다.

프로젝트의 구성원은 5가지 권한으로 분류되며 Owner 권한은 프로젝트의 생성자만 가질수 있다. 아래 표를 참고하여 구성원의 역할에 맞는 적절한 권한 그룹을 부여해 보자. 

계정과 권한이 설정되었으면 Add users 를 클릭하면 프로젝트의 구성원에 추가되며 해당 사용자는 부여한 권한에 맞게 프로젝트에 접근이 가능해진다.