SVN에서 GitLab으로의 전환 그리고 GitHub

2024. 7. 12. 17:11깃랩

반응형

최근회사에서 SVN을 가지고 프로젝트를 구성하여 사람들끼리의 협업이나 배포 프로세스를 잡아가면서 여러가지 이슈 사항이 발생하여 GIT으로의 전환을 고려 해야 했다.

GIT과 SVN 둘다 소중한 형상관리 툴 이지만….

어떤점이 다른지는 다른 블로그들에 잘 설명되어있어서 그런부분들을 참고하면 될 것 같다.

Git과 SVN 차이점 관련 글

https://hahahoho5915.tistory.com/40

 

[간단정리] Git, SVN 특징 및 차이점

개요 형상관리 툴 Git, SVN 각각 특징 및 차이점 알아보기 내용 형상관리(Version Control Revision Control) 툴 - 소프트웨어 버전 관리 툴이라고도 한다. - 형상관리는 소스의 변화를 끊임없이 관리하는 것

hahahoho5915.tistory.com

 

https://velog.io/@lzhxxn/Git-이란

 

🦖 Git 이란 ? SVN VS GIT 차이

🦖 회사에서는 SVN을 사용하기 때문에 잊기 전에 Git 사용법도 기록해두자!참고로 형상 관리 도구는 버전 관리 시스템이라고도 한다.Git은 소프트웨어를 개발하는 기업의 핵심 자산인 소스코드를

velog.io

 

GIT으로 전환을 고려하게 된다면 결국 2가지의 선택지를 맞이하게된다.(3가지이지만…유명하고 큰곳2군데만 비교를 하였다.)

GitLab과 GitHub

두가지의 차이점에 대해서는 많은 곳에서 설명해주고 있다.

그 중 GitLab을 대상으로 고른 이유는 다음과 같았다.

  1. 비용의 문제
  2. 용량의 문제
  3. 보안의 문제

1번과 2번의 경우 연관이 되어있다. 회사에서 관리하는 프로젝트가 어느정도의 규모가 있다고 가정 할 경우 소스의 크기 또한 커진다.

그리고 GitHub의 경우 요금제에 따른 용량에 대한 제한을 두게된다.

그에 따라 다음과 같이 차이가 난다.

깃허브

깃허브요금
깃허브요금 영어버전

차이

깃허브요금 한글

깃랩

그냥 기본 요금제를 사용한다고 가정할때는 깃랩이 더 좋을 것 같다.(서버 설치형) • GitLab 유료 요금제 : 프리미엄 요금제는 사용자당 월 19달러이며, 모든 기능을 제공하는 얼티메이트 요금제는 사용자당 월 99달러다.

깃랩요금

요금 관련 참고주소

https://zeuskwon-ds.tistory.com/57

 

[Github] 깃헙 private 인원제한과 유료버전 비교

현재 회사에서는 Gitlab을 사용해서 버전관리와 협업을 진행하고 있다. 하지만 코로나로 인해 불가피한 재택근무가 생기면서 회사 서버를 쓸수 없게 되었다. 이 때 Gitlab을 사용할 수 없어서 집에

zeuskwon-ds.tistory.com

 

위와같은 조건을 기준으로 보안상의 이슈를 고려 하는경우에는 private 저장소를 사용해야하는데 이 때 사용은 편하겠지만 여러가지 제약이 생기고 그렇다고 Github에서 제공하는 Enterprise요금제를 사용하기에는 부담 스러운게 사실이다.

왜냐하면 기존 SVN에서 GIT으로 넘어가는데 회사의 입장에서는 요금이 발생하지 않던게 추가적으로 발생하게 되어버리는것이 된다.

이에따라 GitLab의 경우 서버 설치형태로 고려하고 클라우드서버에 신규서버를 생성한 다음 추가적인 작업을 수행하기로 하였다.

GitLab에서의 CE와 EE

CE와 EE의 차이점.

CE의 경우 무료 EE의 경우 유료로 알고있는 경우가 많은데.

EE에서 라이센스를 입력하지 않으면 CE와 동일하다고 보면된다고 한다.

그리고 CE → EE로 변환하기가 어렵기 때문에 Gitlab을 사용하다가 좋다고 느껴져서 업그레이드를 하려고 할 때 이관에 어려움을 겪는 경우가 있을 수 있다고 한다.

기타

회사내 놀고있는 윈도우서버가 존재하여 설치할까 고민했었지만 윈도우의 경우 인스톨파일을 제공하지않고 docker기반으로 설치하여 수행시켜야 하는 듯 보였다.

윈도우에서 wsl로 도커기반으로 돌리는 경우 이슈가 많이 발생했었기에 리눅스에서 설치를 그대로 진행하기로 하였다.

GitLab EE 설치하기

공식 설치 방법.

리눅스에서 설치하는 경우 공식 설치 방법을 안내하고있음.(공식 홈페이지)

깃랩 설치의 경우 해당 글을 참고할 수 있습니다.

2024.07.12 - [깃랩] - GitLab 설치 및 기타 에러 대응.

 

GitLab 설치 및 기타 에러 대응.

회사에서 SVN에서 GIT으로 이관하기위해 GitLab이 필요하여 설치하는 작업이 있었기에 정리한다.설치 참고주소(공식 사이트)https://about.gitlab.com/install/#centos-7 Download and install GitLabDownload, install and ma

lollaziest.tistory.com

GitLab 최소 사양

실제설치시 서버 사양을 어떻게 잡아야 할지 고민이였는데 최소 사양의 경우 인터넷에 검색해보면 4c/4G라고 나오는 경우가 많았다.

그러나 4c/4G로 생성해 본 결과 다음과 같이 리소스를 RAM을 생각보다 많이먹어서 코어보다 RAM을 중심으로 서버를 생성해 준 다음 운영해보면서 이슈를 파악해보는 방향으로 결정했다.

(기본스펙 2c/8G로 설치했다.)

메모리 사용모습

최소 사양관련해서 확인되는 글

https://nangman14.tistory.com/51

 

GCP Compute Engine에 Gitlab 서버 구축 + VS Code 연동하기

Gitlab은 CI/CD 기능이 뛰어난 git repository 소프트웨어입니다. 같은 서비스를 제공하는 제품으로 GIthub이 있지만, 무료 버전에서 Private 작업자 수 제한이 없다는 점, Self-managed 버전을 제공한다는 장점

nangman14.tistory.com

 

기본적인 개념 및 GitLab의 동작을 확인하고 싶은 경우

인프런에 GitLab의 파트너사(?) 에서 제공하는 강의를 보면 여러가지 기능에 대한 설명과 간단한 찍먹을 할 수 있을듯 하다.(현재는 무료 강의 이다)

https://www.inflearn.com/course/gitlab-project-management/dashboard

 

[지금 무료] [투씨드 클라쓰] GitLab Project Management Runbook 강의 | 투씨드 클라쓰 - 인프런

투씨드 클라쓰 | GitLab 파트너인 DevOps 전문 기업 (주)투씨드의 컨설팅/교육/구축 경험을 여러분과 함께하기 위해 GitLab PM Runbook에 대한 강의를 소개합니다. GitLab PM Runbook은 GitLab의 여러 기능 중 Plan

www.inflearn.com

 

자세한건 다음 공식 홈페이지에서 기능에 대한 설명을 볼 수 있다,

한글로 된 걸 보고싶다면 infograb이나 무료강의를 제공하는 투씨드에서 공식홈페이지를 번역하여 보여주고 있다.

https://docs.gitlab.com/ee/

 

GitLab Docs | GitLab

Learn how to use and administer GitLab, the most scalable Git-based fully integrated platform for software development.

docs.gitlab.com

 

https://insight.infograb.net/docs/about/gitlab_introduction

 

GitLab 소개 | InfoGrab, DevOps 전문 기술 기업 | 인포그랩 | GitLab기반 DevSecOps 구축,컨설팅,교육,기술지

GitLab은 Git 원격 저장소(Repository) 관리뿐만 아니라, 이슈 트래킹, 코드 리뷰, Wiki, CI/CD, 테스트, 모니터링 등 전체 소프트웨어 개발 라이프사이클에 필요한 기능을 제공합니다.

insight.infograb.net

 

GitLab의 권장 프로세스

원래는 Epics → Issue 하위 형태인데. 에픽이 여러가지의 이슈를 가지는 형태.
에픽은 울티메이트 버전에서 제공하는 기능이다.
회사에서 사용 할 수 있는 프로세스는 다음과 같은 단계로 보면 될 것 같다.

1단계

이슈 만들기
GitLab에서의 모든 변경 사항은 이슈로 시작된다.
작업 트래킹 등 기타 문의들은 이슈로 관리된다고 보면된다.

2단계

Merge Request 생성.
Merge Request를 생성하는 경우 이슈를 기반으로 추가 브랜치가 생성된다.
만약 이미 만들어진 브랜치가 존재한다면 해당 브랜치를 지정해줘야 한다.

3단계

해당 브랜치기준으로 commit이 지속적으로 수행된다.

4단계

Reviewer를 지정하여 review를 수행한다.

GitLab 권한 및 Role

사용자의 경우

그룹 or 서브그룹 or 프로젝트 단위로 초대(invite)가 가능하다.

Role의 경우

Guest → 이슈 or 댓글 작성만 가능.
Reporter → Guest + Merge Request생성만 가능.
Developer(개발자) → 대부분의 기능을 제공함. 제약이 설정된 Branch에는 push 할 수 없지만 별도의 Branch를 생성하여 Repository 파일을 변경 가능함.
Maintainer(PL/PM) → Master Branch에 Push할 수 있고, Merge Request를 승인 할 수 있다. 또한 Group Proect 구성원 등을 관리할 수 있다.(Owner의 대부분의 권한을 가지고 있다고 보면됨.)
Owner(PM/관리자) —> Group Or Project를 생성한 사람. 모든 권한을 가지고있다.
그러나 Owner의 경우 별도로 관리하는게 좋다. —> Maintainer 를 중심으로 관리하자

Label

Label의 경우 이슈를 관리하는 형태라고 보면된다.
gitlab에서는 open close 만 있는데 이러한 것들을 label을 통해서 더 구분하여 사용이 가능하다고 한다.
결국 project or group 단위로 label태그를 붙이는 것과 동일하다고 보면 될 것 같다.
open 되어있지만 inprocess상태인지 아니면 done상태인지 아니면 보류된 상태인지 등등 해당 태그를 기준으로 구분 해 줄 수 있을 것 같다.

ISSUE

다음과 같은 형태로 구성된다.

이슈모습1

맨 밑에는 다음과 같이. label epic 등등 지정이 가능하다.

이슈모습2

템플릿을 지원한다고 한다. (Description Template)

Label에 대한 선택이나 assignees를 지정한다거나 하는 경우 이슈발생시에 알아서 지정되게 하였으면 하는 경우가 있다.
이 때 사용하라고 템플릿을 지원하는듯 하다.

https://docs.gitlab.com/ee/user/project/description_templates.html

 

Description templates | GitLab

GitLab product documentation.

docs.gitlab.com

 

https://docs.gitlab.com/ee/user/project/quick_actions.html

 

GitLab quick actions | GitLab

GitLab product documentation.

docs.gitlab.com

 

해당 내용의 경우 이슈 생성시에 결국 마크다운으로 지정해둔 템플릿을 적용시키게 할 수 있다.
아래와 같은 형태로 선택하는 것이다.

템플릿 선택모습

quick action또한 같이 지원을 하니까 label 등을 미리 지정하는 경우에도 유용할 듯 하다.
대신 해당파일의 경우 특정 경로에 .md파일로 생성이 되어야지만 gitlab에서 사용 가능하다
프로젝트 경로 하위에 다음과 같이 되어있어야함.

프로젝트/.gitlab/issue_templates
프로젝트/.gitlab/request_templates

issue템플릿에서 label을 넣는 경우 영어만 적용된다.(한글라벨의 경우 인식을 제대로 못해주었다.)
예를들어 다음과 같이 issue_templates에 생성했더니 정상적으로 라벨이 적용되더라.

## 이슈 관련하여 내용을 적어주세요.

## 관련 로그나 스크린샷을 첨부해주세요

/labels improve bugfix
/cc @kcgi
/assign @kcgi

Issue 와 Merge Request

—> github기준으론 pull request로 보면 된다.
무료버전에서는 Developer 이상의 권한을 가진 경우 모든 사용자가 승인을 할 수 있다.
유료버전에서 부터 그룹단위로 권한을 주는 role을 지정 할 수 있다고 한다.

Issue Board

무료버전은 project단위로는 여러개 group단위로는 1개만 가능하다.

이슈보드 차이점

Issue 일괄 수정 기능

project 단위에서의 issue
issue의 경우 여러개의 issue에 대해서 한번에 assignee를 변경한다던가 하는 경우에도 일괄 수정 기능을 사용하면 된다.

일괄수정

위와같이 이슈를 기반으로 다양한 기능을 제공하고 있지만.. 무료버전만을 사용하는 경우 장점 및 단점이 결국은 존재 한다.

GitLab 임시 라이센스 적용

유료버전의 경우 어떤부분들이 달라지는지 확인해보고자 하였다.
기존 GitLab에 임시 라이센스로 발급받은 30일짜리 트라이얼을 적용시켜보았다.
얼마나 기능상의 차이가 있는지 확인하기 위해서 이다.

라이센스 등록모습

라이센스 등록 폼

마일스톤에서도 보여주는 차트

마일스톤 칸트차트

 

에픽(Epic) 추가 됨.

에픽과 마일스톤에 대한 차이점 거의 없다고 보면될듯하다.
간트차트중심으로 풀어가는것이 에픽(Epic)이고 칸반보드 중심으로 풀어가는게 마일스톤으로 보면 쉽다.
아래 블로그에서 보면 버전별로 마일스톤을 관리하고 해당 버전에 대한 기능이 얼마만큼 개발이 된건지 퍼센트를 확인하는데 사용한다.
https://cheese10yun.github.io/github-project-part3/

 

Github로 프로젝트 관리하기 Part3 - Yun Blog | 기술 블로그

Github로 프로젝트 관리하기 Part3 - Yun Blog | 기술 블로그

cheese10yun.github.io

 

대략적으로 다음과 같은 모습

마일스톤 활용모습

InfoGrab사이트에서의 GitLab 관련 가이드에서 무료,유료에 대한 차이점을 볼 수 있다.

https://insight.infograb.net/docs/about/gitlab_tiers

 

GitLab Tiers | InfoGrab, DevOps 전문 기술 기업 | 인포그랩 | GitLab기반 DevSecOps 구축,컨설팅,교육,기술지

GitLab에는 세 가지 Tier가 있습니다. 무료인 Free Tier와 가격대에 따라 기능 세트를 제공하는 Premium, Ultimate의 유료 Tier가 있습니다.

insight.infograb.net

 

GitLab의 무료 버전의 기준에서 바라보는 장점과 단점.

장점

  1. issue를 기반으로 관련된 issue를 연결 할 수 있고, 슬랙 리스트와 같이 칸반보드 형태로 관리도 가능하다.
  2. issue에서 발생시킨 Merge Request를 기반으로 생성한 브랜치에서 작업하여 관련성을 바로바로 확인 할 수 있고, 코드를 어떻게 수정했는지 issue를 기반으로 정보를 남길 수 있다.
  3. git을 저장소를 지원함으로써 commit의 경우 로컬에서만 관리 가능 및 별도로 생성된 브랜치에서 동작함으로써 배포시 문제를 어느정도 방지 할 수 있다.
  4. 그룹단위로 관리 함으로써 어느정도의 권한 및 프로젝트 단위의 관리가 가능하다.
  5. 요청시 default label 지정 등의 경우 커스텀이 가능하다.(관련 템플릿 작성해야함)

단점.

  1. 가시성 관련 문제그러나 그 것들에 대해서 시간대 별로 볼 수 있는 view가없다.
  2. 유료버전의 경우 epic을 사용해서 시간대별로 어떤식으로 플로우가 흘러가는지 보여주는게 있다.(간트차트 형태)
  3. 이슈들을 하나로 묶어서 볼 수 있는 마일스톤이 있긴하다.
  4. Merge 승인 관련 문제.
  5. 작업자 지정 및 수행의 경우 생각했던대로 수행하면 된다. 그러나 무료버전의 경우 승인(approval)이 없어도 merge가 된다.(승인없이 merge못하게 강제 할 수가 없음.)
  6. label 기준으로 밖에 볼 수 없고, 나머지 그 밖의 커스텀이 불가능 해 보인다.

 

GitLab에 대한 기능과 어떤식으로 동작하는지는 설치 및 동작을 수행해보면 알 수 있다. 그러나..이제 문제가되는건 SVN에 있는 커밋로그를 옮겨오는 것과 대상 프로젝트가 많...은데 좀 더 쉽게 작업할 수 있는 방법이 없는가 고민해 보는것이 될 것 같다.

반응형

'깃랩' 카테고리의 다른 글

GitLab 설치 및 기타 에러 대응.  (1) 2024.07.12