콘텐츠로 이동

GitLab Generic Package Registry

0. 전제

다음 환경 기준으로 작성:

  • 규모: 프로젝트 5~20개 / 서버 소수
  • 인력: 1~2명 (소수 정예)
  • 멀티 스택 환경: Node.js, Express, Next.js, Nuxt.js, PHP, Laravel, C++ 등
  • 운영 서버: Linux / Windows 혼합 가능
  • Docker 사용 범위: Runner 빌드 환경 및 Release Storage 서버의 AIStor 실행 용도
  • 배포 방식: 운영 서버가 Release Storage에서 빌드 결과물을 직접 가져가는 pull 배포

인프라 전제:

  • GitLab 서버, Runner 서버, Release Storage 서버, 운영 서버는 논리적, 물리적으로 분리 가능한 구성으로 보며, 분리 운영을 전제로 작성함.
  • GitLab 서버는 외부 비공개로 유지하며, 운영 서버는 GitLab 서버에 직접 접근하지 않음.
  • Release Storage 서버는 운영 서버가 접근 가능한 별도 서버로 구성함.

운영 원칙:

  • build -> publish -> operation server pull deploy 구조 유지
  • {YYYYMMDD-HHMMSS}-{declared_version}-{CI_COMMIT_SHORT_SHA} 기반 immutable package version 운영
  • 인증은 목적별 계정 및 Access Key로 분리
  • 빌드: Runner 서버
  • CI 내부 산출물 보관: GitLab Generic Package Registry
  • 운영 배포 기준 저장소: Release Storage (S3-compatible Object Storage)
  • 운영: download, verify, extract, activate, report 수행

금지 사항:

  • 운영 서버에 write 권한 Access Key 배치 금지
  • .env 및 서버 고유 설정 파일을 패키지에 포함 금지
  • 운영 서버에서 배포 파일을 수동 수정한 뒤 재사용 금지
  • Generic Package Registry에 업로드된 package version/file overwrite 금지
  • Release Storage 의 releases 경로 Release Object overwrite 금지
  • Release Storage 의 current/{RELEASE_ENV}.json 외 object overwrite 금지
  • 운영 서버가 GitLab 서버에 직접 접근하도록 구성 금지

위 전제를 기반으로 아래 내용을 정의함. - Generic Package Registry를 실제로 사용할 수 있는 상태까지 준비하는 단계 - GitLab Generic Package Registry를 CI 내부 산출물 보관용 Registry로 준비하는 절차

운영 서버는 GitLab Generic Package Registry 를 직접 사용하지 않으며, 운영 배포 기준은 Release Storage 로 분리함.


1. GitLab Package Registry 사전 구축 및 검증

Registry는 별도 설치 대상이 아니라 GitLab 기능.

1.1 GitLab 설정 (gitlab.rb)

GitLab 서버에서 Package Registry 기능이 활성화되어 있는지 확인.

sudo vi /etc/gitlab/gitlab.rb

확인 또는 추가:

gitlab_rails['packages_enabled'] = true

(선택) Storage 문서 기준 bind mount 구조를 사용하는 경우 기본 경로 유지:

gitlab_rails['packages_storage_path'] = "/var/opt/gitlab/gitlab-rails/shared/packages"

반영:

sudo gitlab-ctl reconfigure

1.2 GitLab UI

프로젝트에서 Package Registry 관련 메뉴가 노출되는지 확인.

경로:

Project → Deploy → Package registry

1.3 프로젝트 Feature 활성

프로젝트에서 Package registry 가 활성화 되어 있는지 확인.

경로:

Project → Settings → General → Visibility, project features, permissions