최근에 저희 Infograb에 GitLab에 대한 기술지원과 교육에 대한 문의 요청이 많아지고 있습 니다. 그중에서도 CI/CD에 대한 고객들의 관심이 점점 증가하는 것을 느끼고 있습니다. 그래서 이번에는 GitLab CI/CD이 기본으로 제공하는 기능들을 소개를 해드리도록 하겠습니다.
CI/CD 파이프라인이란?
가장 먼저 CI/CD가 무엇인지 알아봐야겠죠? 다음은 CI/CD에 대한 사전적인 의미입니다.
- CI(Continuous Integration)
- 저장소로 푸시할 때마다 자동으로 응용 프로그램을 빌드하고 테스트하는 스크립트 세트를 생성하여 어플리케이션의 오류 가능성 감소
- CD(Continuous Delivery/Deployment)
- 어플리케이션은 코드베이스로 푸시된 모든 코드 변경시 빌드되고 테스트될 뿐만 아니라 지속적으로 배포
- 어플리케이션에서 수동으로 배포하는 대신 자동으로 배포
맞습니다. CI/CD는 지속적인 통합과 배포를 의미합니다. GitLab에서는 CI/CD를 기본적으로 스테이지(Stage)와 잡(Job)으로 구성합니다. 스테이지는 이전의 스테이지가 끝나야 진행이 되고, 각 스테이지 안의 잡들은 동시에 병렬로 실행되는 것을 기본으로 합니다. 이렇게 잡과 스테이지로 구성되는 것을 바로 CI/CD 파이프라인(Pipeline)이라고 부릅니다.
GitLab CI/CD 기능 소개
GitLab CI/CD 파이프라인은 GitLab의 전체 라이프사이클 중에 검증, 패키지, 코드보안, 배포까지의 영역에 포함됩니다.
지금부터 검증부터 배포까지 각 영역에 해당하는 GitLab CI/CD 파이프라인의 기능들을 알아보도록 하겠습니다.
검증 (CI)
검증에서는 CI 프로세스를 통해 빌드, 테스트, 코드 검증 자동화를 구현합니다. Gitlab 의 CI 는 보안, 운영 기능과 통합되어 있어 단일 도구에서 손쉽게 의견을 주고받고 승인 절차를 구현할 수 있습니다. 또한 CI 서버는 손쉽게 확장 가능하여 대량의 병렬 처리를 가능하게 합니다.
기능 이름 | 기능 설명 | 사용된 오픈소스 | 필요 라이선스 | 특이점 |
---|---|---|---|---|
CI/CD Pipelines Dashboard | 현재 진행 중인 모든 빌드/배 포 파이프라인에 대한 통합 뷰를 제공 | Free | ||
CI/CD 오토스케일링 지원 | 사용자 환경 변화에 따라서 CI 서버를 오토스케일링 | Free | ||
코드 퀄리티 리뷰 | CI/CD 기능과 코드 퀄리티 체크 기능이 통합되어 사용 가능 | Code Climate | Premium | - 오픈소스 Docker 이미지를 사용 - Auto DevOps에 포함 - Merge Request에서 리포트 형식으로 제공 |
Multi-project pipeline | 프로젝트 간에 빌드를 서로 연결해서 수행하는 기능을 제공 | Premium |
패키지
패키지에서는 배포를 위한 패키지 기능을 제공합니다. 컨테이너, 아티팩트 레지스트리가 기본 제공되어 다양한 환경을 지원하며 SCM 및 CICD와 긴밀히 통합되어 프로세스를 가속화할 수 있습니다.
기능 이름 | 기능 설명 | 사용된 오픈소스 | 필요 라이선스 | 특이점 |
---|---|---|---|---|
컨테이너 이미지 저장소 | CI/CD 과정에서 생성된 도커 컨테이너 이미지를 저장 관리 | Free | ||
컨테이너 이미지 저장 정책 | 저장된 컨테이너 이미지의 보관 기간 및 자동 삭제 정책을 지원 | Free | ||
Git LFS 2.0 | 효율적인 대용량 파일 처리를 위해 LFS (Large File System) 지원 | Free | ||
Conan(C/C++) 저장소 | C/C++ 관련 라이브러리 저장소를 지원 | Conan | Premium | |
Maven(Java) 저장소 | Java 관련 라이브러리 저장소를 지원 | Maven | Premium | - Java 11.0.5 이상 버전 필요 - Maven 3.6 이상 버전 필요 |
NPM(node) 저장소 | nodeJS 관련 라이브러리 저장소를 지원 | NPM | Premium | |
NuGet(.Net) 저장소 | NuGet 관련 패키지 저장소를 지원 | Nuget | Premium | |
PyPI 저장소 | Python 관련 패키지 저장소를 지원 | PyPI | Premium | |
Composer 저장소 | PHP를 위한 의존성 관리를 위한 저장소를 지원 | Composer | Premium |
코드 보안
코드보안에서는 정적분석, 동적분석, 컨테이너 스캐너, 의존성 체크 기능, 라이센스 관리 기능 등 다양한 코드 보안 옵션을 제공합니다.
기능 이름 | 기능 설명 | 사용된 오픈소스 | 필요 라이선스 |
---|