GitLab 써보기

제이·4일 전

GitLab이란?


GitLab은 소스 코드 관리(Git 기반), CI/CD, 보안, 모니터링 및 프로젝트 계획 등을 하나의 플랫폼에서 제공하는 DevOps 플랫폼이다.

단순히 코드를 저장하는 Git 호스팅 서비스라기보다, 코드 작성 → 협업 → 테스트 → 빌드 → 배포 → 운영까지 이어지는 개발 생명주기를 하나의 서비스 안에서 관리하는 것을 목표로 한다.

Github이랑 뭐가 다르고 왜 써야 함

GitHub와 GitLab 모두 Git 저장소를 기반으로 하는 협업 플랫폼이다.

GitHub는 오픈소스 생태계와 개발자 커뮤니티가 매우 크고, GitHub Actions를 이용해 CI/CD도 구성할 수 있다.

반면 GitLab은 저장소 관리뿐만 아니라 CI/CD와 DevOps 파이프라인을 저장소와 밀접하게 통합하여 사용하는 것에 초점을 두고 있다.

둘 다 Git 기반이라 완전히 다른 서비스는 아니다.

GitLab을 사용하는 이유?

  1. Git 저장소 관리
    Git을 기반으로 코드의 버전 관리와 Branch, Merge Request 등을 사용할 수 있다.

  2. CI/CD 자동화
    코드 Push부터 테스트, 빌드, 배포까지의 과정을 자동화할 수 있다.

  3. DevOps 통합 관리
    코드 관리뿐만 아니라 Issue, CI/CD, 보안 등 개발에 필요한 기능을 하나의 플랫폼에서 관리할 수 있다.

  4. 협업 및 코드 리뷰
    Merge Request를 통해 다른 개발자의 코드를 검토하고 안전하게 변경 사항을 반영할 수 있다.

  5. 개발 생명주기 이해
    개발 → 테스트 → 빌드 → 배포로 이어지는 전체 DevOps 흐름을 직접 경험하고 이해할 수 있다.

GitLab 사용해보기

InteliJ에서 GitLab을 사용해보기로 했다.

1. Git 설치 확인

InteliJ에서 File → Settings → Version Control → Git로 들어가 Git 파일이 있는지 확인해준다.

이렇게 Git version이 확인되면 IntelliJ에서 Git을 정상적으로 사용할 수 있다는 뜻이다.

2. GitLab 계정과 연동하기

InteliJ에서 File → Settings → Version Control → GitLab로 들어간다.

Add acount를 눌러준다.


이런 화면이 뜨면 Token을 발급해서 로그인해줘야 하는데,Token을 발급하려면 GitLab으로 접속해서 프로필 사진 → Preferences → Access → Personal access tokens로 들어오면


이런 화면이 보일텐데 Generate token ▼ 버튼을 눌러 Legacy token을 생성해준다.

Token 종류

  • Legacy token의 경우는 Personal Access Token으로 모든 모든 그룹과 프로젝트에 대해 설정한 권한이 적용되어 프로젝트에서 자유롭게 Clone, Push, Pull 작업을 할 때 권한 문제없이 연동된다. 현재는 InteliJ에 연동해보고 GitLab에 적응하는 것이 목표이므로 해당 토큰으로 연결할 것이다.
  • Fine-grained token의 경우는 특정 그룹이나 프로젝트 단위로만 범위를 제한하고 세부 권한을 쪼개서 부여하는 토큰으로 팀이나 기업이 아니면 개인 프로젝트를 진행하는 현재로선 부여받지 않았다.


그럼 해당 화면이 나올 것이다. 차례대로 살펴보면 다음과 같다.

1. Token name (필수)
어떤 용도의 토큰인지 알아볼 수 있는 토큰의 이름을 적으면 된다. 생략이 불가하므로 필수다.

2. Description (선택)
필요하다면 생략하거나 토큰의 설명을 적어준다.

3. Expiration date
토큰의 만료일을 지정하는 곳이다. (기본 설정된 날짜 그대로 둬도 된다.) 토큰 만료일이 경과한 뒤로는 해당 토큰은 사용할 수 없으며 재발급 받아 새 토큰으로 재연동 해줘야 한다.

4. Select scopes (권한 설정)
IntelliJ에서 저장소 클론, 푸시, 풀 등 모든 기능을 문제없이 쓰려면 아래 두 가지 권한에 체크해주면 된다.

  • api (전체 API 접근 권한 - 보통 이것만 체크해도 대부분의 연동 기능이 완벽하게 동작합니다.)

  • write_repository (Git을 통한 소스 코드 읽기/쓰기 권한)

그리고 나서 생성 버튼을 누르면 Token 키를 받을 수 있는데 생성 당시 화면에만 Token 키를 복사할 수 있으므로 잘 메모해서 보관해두면 된다.


그리고 다시 InteliJ로 돌아와서 발급받은 토큰을 입력하고 로그인을 누른다.


성공적으로 계정이 등록되었다! Apply -> Ok해주면 된다.

IntelliJ 프로젝트 생성

먼저 테스트용 프로젝트를 만들어준다. Create Git repository를 선택하여 Git 저장소를 함께 생성했다.

이렇게 하면 프로젝트 폴더에 .git이 생성되고 Git을 사용할 수 있는 상태가 된다.

이미 Git이 초기화되어 있는 프로젝트라면 git init을 다시 실행할 필요가 없다.

4. GitLab Repository 연결


GitLab에 들어가서 New project → Create blank project를 누른다.


생성창이 나오면 설정을 해주면 된다.

  1. Project name: 만들고자 하는 프로젝트(저장소) 이름을 입력한다.

  2. Project URL: 기본으로 선택되어 있는 본인의 계정(Namespace)을 그대로 둬도 된다.

  3. Visibility Level: Public(공개), Private(비공개) 설정하는 곳이다.

  4. Initialize repository with a README: 항상 체크되어 있는 곳인데 파일이 있으면 추후 저장소 커밋 시 충돌하거나 git pull해야 할 수 있으니 귀찮아서 뺌

개인 프로젝트와 Group 프로젝트


개인계정에 만들지 그룹에 만들 것인지 선택하는 곳이다.

  • Users 아래에 있는 (본인 아이디): 혼자서 사용하는 개인 프로젝트라면 여기를 선택하시면 된다. 가장 일반적인 개인 저장소 생성 방식이다.
  • Groups 아래에 있는 (본인 아이디)-group: 팀원들과 함께 협업하거나 그룹 단위로 프로젝트를 관리하고 싶을 때 선택하면 된다.

1. GitLab에서 Clone 주소 복사하기


GitLab 프로젝트 화면 -> Code에서 Clone URL을 복사해준다. 현재 SSH 키는 발급하지 않은 상태로 HTTPS URL로 연결할 것이다.


상단 메뉴바에서 Git -> Clone으로 들어가 방금 복사한 URL를 붙여놓고 Clone버튼을 누르면 끝이다.


그럼 이렇게 GitLab에서 들어오게 됨

IntelliJ 프로젝트를 GitLab으로 옮기려면?

작업하던 IntelliJ 프로젝트 폴더로 돌아온 뒤 상단 메뉴바에서 Git → Manage Remotes을 눌러준다.


+ Add 버튼을 눌러 GitLab의 Clone URL을 입력하고 추가해주면 된다.


성공적으로 연결됐는지 확인하려면 터미널에서 git remote -v을 입력하면 해당 GitLab의 Project 주소가 나온다.

Branch, Pull, Push, Commit은?

Github에서 GitLab으로 건너오긴 했으나 새로운 생태계에 고민이 드는게 Github에서 주로 관리하던 Github 브랜치 관리 및, Pull, Push, Commit 명령어를 GitLab에서도 써도 되는가였다.🤔

GitLab, GitHub, Bitbucket 등은 모두 근본적으로 Git이라는 동일한 버전 관리 시스템을 기반으로 작동하기 때문에, 브랜치(Branch), 커밋(Commit), 풀(Pull), 스태시(Stash) 등의 명령어와 개념이 같기 때문에 Github에서 쓰던 명령어를 GitLab에서 써도 된다고 한다.

InteliJ의 자체적인 커밋 기능이 GitLab에 반영되는지랑 터미널 커밋이 적용되는지 확인해보기 위해 간단한 테스트를 해보기로 했다.

따라서 다음과 같은 Git의 기본 개념과 명령어는 GitLab에서도 동일하게 사용할 수 있다.

  • Branch
  • Commit
  • Pull
  • Push
  • Stash
  • Merge
  • Rebase

차이점은 Git 자체가 아니라 GitLab과 GitHub가 제공하는 Repository 관리, 협업, CI/CD 등의 플랫폼 기능에 있다.


InteliJ의 자체적인 커밋 기능으로 커밋을 해줬다.


InteliJ -> Git에서는 정상적으로 반영이 됨


터미널로 별도로 git push로 저장소에 올려준다.


Project에 정상적으로 반영이 되었다.

정리

이번에는 IntelliJ에서 GitLab을 직접 연결하고 기존 프로젝트를 GitLab Repository와 연결해보았다.

처음에는 GitHub와 GitLab이 단순히 비슷한 서비스라고 생각했는데, 직접 사용해보면서 Git 자체와 GitHub/GitLab 같은 Git 호스팅 플랫폼의 차이도 조금 이해하게 되었다.

특히 중요한 부분은 다음과 같다.

Git
↓
Commit / Branch / Pull / Push
↓
GitLab Repository
↓
Merge Request / CI/CD / 협업

GitHub에서 사용하던 Git 명령어는 GitLab에서도 그대로 사용할 수 있으며, GitLab은 여기에 Repository 관리와 CI/CD, 협업 기능 등을 제공한다.

다음에는 GitLab의 Branch와 Merge Request를 직접 사용하고 CI/CD Pipeline까지 연결해봐야 할 것 같다. 써보면서 익히는게 베스트일 것 같다.

profile
배운 것을 기록합니다.

0개의 댓글