GitLab 소개
GitLab은 Git 원격 저장 소(Repository) 관리뿐만 아니라, 이슈 트래킹, 코드 리뷰, Wiki, CI/CD, 테스트, 모니터링 등 전체 소프트웨어 개발 라이프사이클에 필요한 기능을 제공합니다.
GitLab은 단일 애플리케이션으로 제공되는 완전한 DevOps 플랫폼입니다. 간소화된 소프트웨어 워크플로를 생성하여 서로 짜 맞추어진 툴체인의 제약에서 조직을 벗어나게 합니다.
현대적인 소프트웨어 개발 방법인 클라우드 네이티브(Cloud Native) 환경 구축에 필요한 DevOps, Container, Kubernetes, CI/CD를 위한 기능을 제공합니다.
주요 기능
GitLab은 초기에 Git 원격 저장소, 코드 탐색, 이슈 트래커 기능 등을 제공하는 소프트웨어의 형태로 시작되어, 이후 더 많은 기능을 추가하여 전체 소프트웨어 개발 라이프사이클을 커버하는 플랫폼으로 성장했습니다.
- 그룹 및 프로젝트 관리 : 그룹 및 프로젝트를 통해 업무를 계획(Milestone)하고 세부화한 업무(Issue)를 구성원에게 배정하여 팀의 수행 프로젝트를 관리할 수 있습니다. 그룹은 동일한 네임스페이스에서 관련 프로젝트를 구성하고 최상위 그룹에 구성원을 추가하여 여러 프로젝트와 여러 팀 구성원에게 더 적은 단계로 액세스 권한을 부여할 수 있습니다. 프로젝트는 코드베이스 단위로 만듭니다. 이를 이슈 트래커로 사용하고, 코드에 대해 공동 작업하고, 내장된 GitLab CI/CD를 사용하여 앱 을 지속적으로 빌드, 테스트 및 배포할 수 있습니다.
- Repository : 프로젝트를 생성하면 자동으로 Git 원격 저장소가 생성됩니다. 코드베이스를 저장하고 버전 제어를 통해 코드를 변경하는 데 사용되며, 파일을 탐색하고 상호 작용하는 다양한 방법을 Web UI로 제공합니다.
- 이슈 트래커(Tracker) : 공동으로 아이디어를 개발하고 문제를 해결하며 작업을 계획하기 위한 고급 도구입니다. 새로운 아이디어의 구현 논의, 태스크(Task) 및 작업 상태 추적, 기능 제안, 질문, 지원 요청 또는 버그 보고서의 수락, 새로운 코드 구현에 대해 자세히 설명하는데 활용할 수 있습니다.
- 이슈 보드(Board) : 기능 또는 제품 릴리즈에 대한 워크플로우를 계획, 구성 및 시각화하는 데 사용되는 소프트웨어 프로젝트 관리 도구입니다. 칸반(Kanban) 또는 스크럼(Scrum) 보드로 사용할 수 있습니다. 레이블(Label) 기반으로 이슈 추적과 프로젝트 관리를 결합하여 모든 것을 함께 유지하므로 워크플로우를 구성하기 위해 서로 다른 플랫폼 사이를 이동할 필요가 없습니다. 레이블을 추가하여 기존 이슈에 해당하는 목록을 만들고, 카드를 한 단계에서 다른 단계로 끌어다 놓을 수 있습니다.
- 레이블(Labels) : 이슈, 병합 요청 및 에픽의 수가 증가함에 따라 이러한 항목을 추적하는 것이 점점 더 어려워집니다. 특히 조직이 소수에서 수백 또는 수천으로 성장함에 따라 더욱더 그렇습니다. 레이블은 작업을 구성하고 태그를 지정하여 관심 있는 작업 항목을 추적하고 찾을 수 있도록 도와줍니다. 버그, 기능 요청 또는 문서와 같은 설명 제목과 색상을 사용하여, 에픽, 이슈 및 병합 요청을 분류하여 동적으로 필 터링하고 관리하며 이런 항목들을 검색할 수 있습니다.
- 마일스톤(Milestone) : 특정 기간 동안 더 광범위한 목표를 달성하기 위해 생성된 이슈 및 병합 요청(Merge Request)을 추적하는 방법입니다. 마일스톤을 이용하면 시작일(선택 사항)과 마감일(선택 사항)을 사용하여 이슈와 병합 요청을 응집력 있는 그룹으로 구성할 수 있습니다.
- 병합 요청(Merge request) : 한 브랜치를 다른 브랜치로 병합하기 위한 요청입니다. 병합 요청을 사용하여 소스 코드에 대해 제안된 변경사항을 시각화하고 협업할 수 있습니다.
- 내장 CI/CD : 무료로 내장된 CI/CD를 가지고 있으며 별도로 설치할 필요가 없습니다. 이를 사용하여 애플리케이션을 빌드, 테스트 및 배포합니다. 작업 결과는 쉽게 액세스할 수 있도록 병합 요청(Merge request)에 표시됩니다.
- WiKi : 문서화를 위한 별도 시스템이 각 GitLab 프로젝트에 내장되어 있습니다. Wiki는 문서를 저장소에 보관하고 싶지 않지만 코드가 있는 동일한 프로젝트에 보관하고 싶은 경우 매우 편리합니다. 모든 Wiki는 별도의 Git 저장소이므로 웹 인터페이스에서 또는 Git Clone하여 로컬에서 작업할 수 있습니다.
- 스니펫(Snippets) : 자주 사용하는 코드 조각과 텍스트를 저장하고 다른 사용자와 공유할 수 있습니다.
- Web IDE : Git CLI(명령줄 인터페이스)에 익숙하지 않은 사용자도 쉽게 사용할 수 있는 기능으로, 코드를 변경하고 Web 브라우저에서 직접 커밋할 수 있는 커밋 스테이징(Commit Staging)을 제공하여 프로젝트에 변경사항을 빠르고 쉽게 적용할 수 있습니다.