GitLab을 사용하여 지속적 통합 (CI)

지속적인 통합이 기본 제공됩니다

**지속적 통합(Continuous Integration, CI)**은 팀이 제공하는 코드를 공유 리포지터리에 통합하는 작업을 합니다. 개발자는 병합 요청(MR)에서 새 코드를 공유합니다. 요청은 리포지터리 내에서 변경사항을 병합하기 전에 새 코드를 빌드, 테스트 및 검증하는 파이프라인을 트리거합니다.

**지속적 전달(Continuous Delivery, CD)**의 관행은 구조화된 배포 파이프라인을 통해 CI 검증 코드를 애플리케이션에 전달하도록 보장합니다.

CI와 CD가 함께 사용하면 팀이 고객과 이해 관계자를 위해 더 빠른 결과를 제공할 수 있습니다. CI는 개발 주기 초기에 버그를 포착하고 제거하는 데 도움이 되며 CD는 검증된 코드만 애플리케이션에 전송되도록 합니다.

CI와 CD는 팀이 신속하고 효과적으로 구축할 수 있도록 함께 작동해야 하며, 완전히 최적화된 소프트웨어 개발에 중요합니다.

팀에 CI가 필요한 이유

더 적은 수작업, 더 많은 자동화

  • 가능한 한 빨리 오류 감지 : 개발자 마음에 새롭다고 생각하는 동안 문제 해결
  • 통합 문제 감소 : 작은 문제가 이해하고 해결하기 더 쉬움
  • 복합적인 문제 방지 : 팀이 더 확신을 가지고 더 빠르게 개발할 수 있음

CD에 대한 원활한 경로

  • 모든 변경사항이 릴리즈할 수 있도록 보장 : 완료라고 부르기 전에, 배포를 포함한 모든 것을 테스트
  • 각 릴리즈의 리스크 감소 : 릴리즈를 "지루하게" 만듦
  • 보다 빈번한 가치 제공 : 안정적인 배포는 더 많은 릴리즈를 의미
  • 긴밀한 고객 피드백 루프 : 변경과 관련한 빠르고 빈번한 고객 피드백
photo | 인포그랩 GitLab | 인포그랩 GitLab

CI를 위한 GitLab 사용의 장점

  • 통합 : CI가 GitLab에 내장되어 아이디어에서 계획, 배포(및 그 이후)에 이르기까지 단일 대화가 가능합니다.
  • 오픈 소스 : CI는 CD와 함께 오픈 소스 GitLab Community Edition과 저작권이 있는 GitLab Enterprise Edition의 일부입니다.
  • 배우기 쉬움 : 빠른 시작 가이드를 참조하세요.
  • 끊김 없는 : 단일 GitLab 애플리케이션의 일부이며 뛰어난 단일 사용자 경험을 제공합니다.
  • 확장성 : 테스트는 별도의 시스템에 분산되어 실행됩니다. 원하는 만큼 추가할 수 있습니다.
  • 더 빠른 결과 : 각 빌드를 여러 시스템에서 병렬로 실행되는 여러 작업으로 분할할 수 있습니다.
  • 전달(delivery)에 최적화됨 : 여러 단계, 수동 배포 게이트, 환경변수
photo | 인포그랩 GitLab | 인포그랩 GitLab

특징

  • 다중 플랫폼 : Unix, Windows, macOS 및 Go를 지원하는 기타 플랫폼에서 빌드를 실행합니다.
  • 다중 언어 : 빌드 스크립트는 명령줄 기반이며 Java, PHP, Ruby, C 및 기타 모든 언어에서 작동합니다.
  • 안정적 : 빌드가 GitLab과 다른 머신에서 실행됩니다.
  • 병렬 빌드 : GitLab은 더 빠른 실행을 위해 여러 머신에 빌드를 분할합니다.
  • 실시간 로깅 : 병합 요청의 링크를 통해 동적으로 업데이트되는 현재 빌드 로그로 이동합니다.
  • 유연한 파이프라인 : 단계 당 여러 개의 병렬 작업을 정의하고 다른 빌드를 트리거할 수 있습니다.
  • 버전 파이프라인 : .gitlab-ci.yml 파일에는 테스트와 전체 프로세스 단계가 포함되어 있어, 모두가 변경사항에 기여하고 모든 브랜치가 필요한 파이프라인을 확보할 수 있도록 합니다.
  • 자동 확장 : VM을 자동으로 스핀 업 및 다운하여 비용을 최소화하고 빌드가 즉시 처리되도록 합니다.
  • 작업 아티팩트 : GitLab Runner는 GitLab UI 또는 GitLab API를 사용하여 단일 아카이브로 다운로드할 수 있는 바이너리 및 기타 작업 아티팩트를 GitLab에 업로드합니다.
  • 로컬 테스트 : 여러 Executor가 있으며 로컬에서 테스트를 재현할 수 있습니다.
  • Docker 지원 : 커스텀 Docker 이미지를 사용하고, 테스트의 일부로 서비스를 스핀업하며, 새로운 Docker 이미지를 빌드하고, Kubernetes에서 실행할 수도 있습니다.
  • 컨테이너 레지스트리 : 컨테이너 이미지를 저장, 공유, 사용하기 위한 내장된 컨테이너 레지스트리입니다.
  • 보호된 변수 : 환경별 보호 변수를 사용하여 배포 중에 시크릿을 안전하게 저장하고 사용합니다.
  • 환경 : 임시 리뷰 앱을 포함한 여러 환경을 정의하고, 모든 환경에 대한 배포 기록을 확인합니다.

GitLab은 전체 DevOps 라이프사이클을 위한 하나의 애플리케이션입니다

  • GitLab Runner를 사용하여 애플리케이션 빌드
  • 단위 및 통합 테스트를 실행하여 코드가 유효한지 확인
  • 안정적인 버전으로 병합하기 전에 리뷰 앱으로 개발 브랜치의 실시간 미리보기를 확인
  • 스테이징 및 프로덕션과 같은 여러 환경에 배포하고, 카나리(Canary) 배포와 같은 고급 기능을 지원
  • 애플리케이션의 성능 및 상태 모니터링
photo | 인포그랩 GitLab | 인포그랩 GitLab

GitLab은 클라우드 네이티브용으로 구축되었습니다.

  • 일관성과 재현성을 위해 변경 불가능한 Docker 컨테이너 이미지로 CI 작업(Job) 환경을 정의합니다.
  • Kubernetes 통합을 활용하여 AutoDevOps, 배포 보드(Deploy Boards), 리뷰 앱 및 카나리(Canary) 배포와 같은 기능을 활성화합니다.
  • 클라우드 배포 템플릿을 사용하여 클라우드 컨테이너 및 Kubernetes 환경에 쉽게 배포합니다.
photo | 인포그랩 GitLab | 인포그랩 GitLab

GitLab과 완전히 통합

  • 빠른 프로젝트 설정 : 클릭 한 번으로 프로젝트를 추가하고 모든 훅은 GitLab API를 통해 자동으로 설정됩니다.
  • 병합 요청 통합 : GitLab의 병합 요청 내에서 각 빌드의 상태를 확인합니다.
photo | 인포그랩 GitLab | 인포그랩 GitLab

아키텍처

GitLab CI/CD는 데이터베이스에 상태를 저장하는 API를 갖춘 웹 애플리케이션인 GitLab에 내장되어 있습니다. 프로젝트/빌드를 관리하고 다른 GitLab 기능 외에도 멋진 사용자 인터페이스를 제공합니다.

GitLab Runner는 빌드를 처리하는 애플리케이션입니다. 별도로 배포할 수 있으며 API를 통해 GitLab CI/CD와 함께 작동합니다.

테스트를 실행하려면, 최소한 GitLab 인스턴스 하나와 GitLab Runner 하나가 필요합니다.

photo | 인포그랩 GitLab | 인포그랩 GitLab

GitLab Runner

실제 빌드를 수행하려면 Go로 작성된 GitLab Runner를 설치해야 합니다.

Linux, macOS, Windows, FreeBSD 및 Docker를 포함하여 Go 바이너리를 빌드할 수 있는 모든 플랫폼에서 실행할 수 있습니다.

.Net, Java, Python, C, PHP 등을 포함한 모든 프로그래밍 언어를 테스트할 수 있습니다.

GitLab Runner에는 자동 확장, 뛰어난 Docker 지원, 여러 작업을 동시에 실행할 수 있는 기능 등 많은 기능이 있습니다.

GitLab Runner 설치

photo | 인포그랩 GitLab | 인포그랩 GitLab

도움말 및 추가 정보

photo | 인포그랩 GitLab | 인포그랩 GitLab

모든 GitLab 기능을 30일 동안 무료로 사용해보세요

GitLab은 단순한 소스 코드 관리 또는 CI/CD 그 이상입니다. 단일 애플리케이션으로 제공되는 전체 소프트웨어 개발 라이프사이클 및 DevOps 도구입니다.

무료로 GitLab 사용해 보기

GitLab 원문 보기