패키지 및 Docker 이미지의 버전 형식

패키지

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)에게 패키지 버전이 동일한 경우 Enteprise Edition 패키지를 Community Edition 패키지의 업그레이드로 취급하도록 지시합니다. 왜냐하면 eece보다 lexographically로 정렬되기 때문입니다.

OMNIBUS_RELEASE 구성요소는 폐기되었으며 항상 0으로 설정됩니다. 과거에 OMNIBUS_RELEASEomnibus-gitlab에 영향을 미치지 않는 빠른 버그 수정을 나타냈으며 GitLab Rails나 다른 번들된 구성요소에 대한 변경이 없었습니다. 업데이트는 사용자에게 영향을 미치기 때문에 주로 의미론적 버전 업데이트가 필요했습니다. 따라서 OMNIBUS_RELEASE는 실제로 유용하지 않았으며 더 이상 관련이 없습니다.

빌드 버전

버전 문자열의 빌드 버전 구성요소는 패키지가 기능 브랜치, 매일 빌드, 또는 태그된 릴리스에 따라 변경됩니다.

기능 브랜치 빌드

일반 기능 브랜치 빌드의 경우 버전 형식은 <latest stable git tag>+rfbranch.<파이프라인 ID>.<omnibus-gitlab SHA>-<build iteration>입니다.

위에서 언급했듯이, 일반 기능 브랜치 빌드의 build iteration0으로 설정됩니다. 이 유형의 예제 버전 문자열은 13.1.1+rfbranch.159743.eb538eaf-0입니다.

+rfbranch 문자열은 일반 기능 브랜치 빌드에서 패키지로 빌드되었다는 것을 나타냅니다. 또한 안정적인 브랜치에 대한 업그레이드로 보도록 +rfbranch는 패키지 매니저(예: apt 또는 yum)에서 높은 위치에 배치됩니다.

매일 빌드

매일 패키지의 경우 버전 형식은 <latest stable git tag>+rnightly.<파이프라인 ID>.<omnibus-gitlab SHA>-<build iteration>입니다.

위에서 언급했듯이, 매일 빌드의 build iteration0으로 설정됩니다. 이 유형의 예제 버전 문자열은 13.1.1+rnightly.159756.b2b5f05e-0입니다.

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

태그된 릴리스 빌드

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

예를 들어, 만약 태그가 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 형식입니다.

Docker 이미지

omnibus-gitlab CI 파이프라인에서 만들어진 Docker 이미지는 이전 단계에서 빌드된 Ubuntu 패키지를 기반으로 합니다. 따라서 Docker 이미지 태그도 패키지 버전 문자열에서 동일한 정보를 반영합니다. 패키지 버전에서 사용되는 + 기호는 이미지 태그에 지원되지 않는 문자이므로 슬러그로 바뀝니다.

일반적으로 Docker 이미지는 패키지 버전의 슬러그를 태그로 사용합니다. 또한, 모든 Docker 이미지는 빌드되는 호스트에 해당하는 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 패키지로부터 빌드된 Docker 이미지의 태그가 될 것입니다.

이 일반 규칙을 벗어나는 특수 케이스는 아래에 나열됩니다.

QA mirror에서 트리거된 빌드

트리거된 파이프라인의 일부로 생성된 Docker 이미지는 트리거 출처에 따라 태그가 결정됩니다. 만약 트리거가 omnibus-gitlab 파이프라인에서 시작된 경우 이미지 태그는 패키지 버전의 슬러그가 됩니다. 그러나, 트리거가 GitLab이나 GitLab-FOSS 파이프라인에서 시작된 경우 이미지 태그는 해당 파이프라인에 대응하는 커밋의 SHA로 설정됩니다.

이러한 작업은 Dockerhub 리포지터리에 게시되지 않습니다.

매일 빌드

일정된 매일 파이프라인에 의해 만들어진 Docker 이미지는 다른 nightly 태그와 함께 태그되며 두 태그 모두 Dockerhub 리포지터리로 푸시됩니다.

gitlab/gitlab-ee:nightlygitlab/gitlab-ce:nightly는 두 가지 버전 모두에 대한 이미지 참조를 나타냅니다.

태그가 지정된 릴리스 빌드

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