패키지 및 도커 이미지의 버전 형식

패키지

omnibus-gitlab 지속적 통합 파이프라인에서 빌드된 패키지는 <build_version>-<build_iteration> 형식의 버전 문자열을 갖습니다. 이러한 파이프라인은 일반적으로 세 가지 유형의 패키지를 생성합니다:

  • 피처 브랜치 빌드
  • 매일 빌드
  • 태그가 지정된 릴리스 빌드
note
버전 문자열의 build_iteration 부분은 특정 의미를 전달하고 build_version이 어떻게 계산되는지에 기여합니다. 다음 섹션은 build_iteration이 버전 문자열의 제일 뒤에 오지만 먼저 이해되어야 함에 주목하여 작성되었습니다.

빌드 반복

버전 문자열은 번들된 구성요소의 변경을 포함하지 않는 관련 로직 변경을 패키징할 때 build_iteration을 사용합니다.

릴리스 타입 예시 파이프라인 build_iteration 문자열
태그가 지정되지 않음 피처 브랜치, 매일 빌드 0
태그가 지정됨 릴리스 ce.<OMNIBUS_RELEASE> 또는 ee.<OMNIBUS_RELEASE>

ce 또는 ee와 같은 에디션 컴포넌트는 apt 또는 yum과 같은 패키지 관리자에게 패키지 버전이 동일한 경우 Enterprise Edition 패키지를 Community Edition의 업그레이드로 처리하도록 지시합니다. 왜냐하면 eece보다 사전순으로 나열되기 때문입니다.

OMNIBUS_RELEASE 컴포넌트는 더 이상 사용되지 않으며 항상 0으로 설정됩니다. OMNIBUS_RELEASE는 과거에는 omnibus-gitlab에 영향을 미치지 않는 빠른 버그 수정을 나타냈으며 GitLab Rails 또는 기타 번들된 컴포넌트에 변경이 없더라도 사용자에게 영향을 미치는 경우 Semantic Version 업데이트가 자주 필요했습니다. 따라서 실제로 OMNIBUS_RELEASE는 유용하지 않았으며 더 이상 관련이 없습니다.

빌드 버전

버전 문자열의 빌드 버전 컴포넌트는 패키지가 일반 피처 브랜치, 매일 빌드 또는 태그가 지정된 릴리스 인지에 따라 변경됩니다.

일반 피처 브랜치 빌드

일반 피처 브랜치 빌드의 경우 버전 형식은 <최신 안정적인 git 태그>+rfbranch.<파이프라인 id>.<omnibus-gitlab SHA>-<build iteration>입니다.

앞서 언급한대로 정상적인 피처 브랜치 빌드의 build iteration0으로 설정됩니다. 이 유형의 예시 버전 문자열은 13.1.1+rfbranch.159743.eb538eaf-0입니다.

+rfbranch 문자열은 패키지가 일반 피처 브랜치 빌드에서 생성되었음을 나타냅니다. 또한 안정적인 브랜치 이후에 배치되어 apt 또는 yum과 같은 패키지 관리자가 이것을 안정적인 릴리스 패키지로부터의 업그레이드로 간주하도록 합니다.

매일 빌드

매일 빌드의 경우 버전 형식은 <최신 안정적인 git 태그>+rnightly.<파이프라인 id>.<omnibus-gitlab SHA>-<build iteration>입니다.

앞서 언급한대로 매일 빌드의 build iteration0으로 설정됩니다. 이 유형의 예시 버전 문자열은 13.1.1+rnightly.159756.b2b5f05e-0입니다.

+rnightly는 이 패키지가 매일 빌드의 결과임을 나타냅니다. 패키지 관리자가 알파벳순으로 비교할 때 +rnightly는 최신 안정적 버전 및 +rfbranch 패키지보다 크게 간주됩니다. 패키지 관리자는 항상 매일 빌드 패키지를 패키지 업그레이드로 처리합니다.

태그가 지정된 릴리스 빌드

태그가 지정된 릴리스 빌드의 경우 Git 태그가 <SemVer 버전>+<build iteration> 형식인 반면, 버전 문자열은 <SemVer 버전>-<build iteration> 형식을 따릅니다.

예를들어, 태그가 13.1.0+rc42.ce.0, 13.1.0+ce.0, 13.1.0+ee.0일 때 버전 문자열은 각각 13.1.0-rc42.ee.0, 13.1.0-ce.0, 13.1.0-ee.0입니다.

앞서 언급한대로, 피처 브랜치 및 매일 빌드와는 달리 이러한 릴리스의 build iteration 컴포넌트는 (ce|ee).0 형식입니다.

도커 이미지

omnibus-gitlab CI 파이프라인에서 생성된 도커 이미지는 이전 단계에서 빌드된 Ubuntu 패키지를 기반으로 합니다. 따라서 도커 이미지 태그도 패키지 버전 문자열에서 얻은 정보를 반영합니다. 패키지 버전에서 사용된 + 기호는 이미지 태그에서 지원되지 않는 문자이므로 슬러그를 얻기 위해 -로 대체됩니다.

일반적인 규칙으로 도커 이미지는 패키지 버전의 슬러그를 태그로 사용할 것입니다. 또한, 모든 도커 이미지는 해당 이미지가 빌드되는 호스트에 해당하는 Docker 컨테이너 레지스트리에 푸시될 것입니다.

전체 이미지 참조는 다음 형식을 갖습니다.

dev.gitlab.org:5005/gitlab/omnibus-gitlab/gitlab-(ce|ee):<패키지 버전의 슬러그>

예를들어, dev.gitlab.org:5005/gitlab/omnibus-gitlab/gitlab-ce:13.2.1-rfbranch.163015.32ed1c58-0은 버전 13.2.1+rfbranch.163015.32ed1c58-0로부터 빌드된 GitLab CE 패키지를 위한 도커 이미지 태그입니다.

이 일반 규칙과 다른 특별한 케이스는 아래에서 설명하겠습니다.

QA 미러에서 트리거된 빌드

트리거된 파이프라인의 일부로 생성된 Docker 이미지는 트리거가 발생한 위치에 따라 태그가 결정됩니다. 만약 트리거가 omnibus-gitlab 파이프라인에서 발생했다면 이미지 태그는 패키지 버전의 슬러그가 됩니다. 그러나, 트리거가 GitLab 또는 GitLab-FOSS 파이프라인에서 발생했다면 이미지 태그는 해당 파이프라인에 해당하는 커밋 SHA로 설정됩니다.

이러한 작업은 Dockerhub 레지스트리에 게시되지 않습니다.

매일 빌드

일반적인 네이밍 규칙에 추가하여, 스케줄링된 매일 파이프라인에 의해 빌드된 Docker 이미지는 nightly 태그로 태깅되며 두 태그 모두 Dockerhub 레지스트리에 푸시됩니다.

gitlab/gitlab-ee:nightlygitlab/gitlab-ce:nightly는 두 가지 제공되는 에디션을 위한 이미지 참조를 나타냅니다.

태그가 지정된 릴리스 빌드

일반적인 네이밍 규칙에 추가하여, 태그가 지정된 릴리스 파이프라인에 의해 빌드된 Docker 이미지는 latest로도 태그되며 두 태그 모두 Dockerhub 레지스트리에 푸시됩니다.