패키지 및 Docker 이미지의 버전 형식
패키지
omnibus-gitlab
지속적인 통합 파이프라인에 의해 빌드된 패키지는
<build_version>-<build_iteration>
형식의 버전 문자열을 가집니다.
파이프라인은 일반적으로 세 가지 유형의 패키지를 생성합니다:
- 기능 브랜치 빌드
- 야간 빌드
- 태그 릴리스 빌드
build_iteration
부분은 특정 의미를 가지며,
build_version
이 계산되는 방식에 기여합니다.
다음 섹션은 build_iteration
이 버전 문자열에서 마지막에 오지만
먼저 이해되어야 한다는 점을 염두에 두고 작성되었습니다.빌드 반복
버전 문자열은 관련 논리 변경 사항을 패키징할 때 build_iteration
을 사용하며
이 경우 번들된 구성 요소의 변경 사항은 포함되지 않습니다.
릴리스 유형 | 예시 파이프라인 |
build_iteration 문자열 |
---|---|---|
비태그 | 기능 브랜치, 야간 빌드 | 0 |
태그 | 릴리스 |
ce.<OMNIBUS_RELEASE> 또는 ee.<OMNIBUS_RELEASE>
|
에디션 구성 요소인 ce 또는 ee는 패키지 버전이 동일할 경우 패키지 관리자에게 Enterprise Edition 패키지를 Community Edition의 업그레이드로 처리하도록 지시합니다. ee가 ce보다 레스모릭적으로 정렬되기 때문입니다.
OMNIBUS_RELEASE
구성 요소는 더 이상 사용되지 않으며 항상 0
으로 설정됩니다.
역사적으로 OMNIBUS_RELEASE
는 omnibus-gitlab
을 목표로 한 빠른 버그 수정을 나타내며
GitLab Rails나 기타 번들된 구성 요소에는 변경 사항이 없었습니다.
업데이트는 종종 사용자 영향으로 인해 Semantic Version 업데이트가 필요했습니다.
이런 이유로 OMNIBUS_RELEASE
는 실제로 유용하지 않았으며 더는 관련성이 없습니다.
빌드 버전
버전 문자열의 빌드 버전 구성 요소는 패키지가 기능 브랜치, 야간 빌드, 또는 태그 릴리스인지에 따라 변경됩니다.
정규 기능 브랜치 빌드
정규 기능 브랜치 빌드의 경우,
버전 형식은
<latest stable git tag>+rfbranch.<pipeline id>.<omnibus-gitlab SHA>-<build iteration>
입니다.
위에서 언급했듯이, 정규 기능 브랜치 빌드의 build iteration
은
0
으로 설정됩니다. 이 유형의 예시 버전 문자열은
13.1.1+rfbranch.159743.eb538eaf-0
입니다.
+rfbranch
문자열은 패키지가 정규 기능 브랜치 빌드에서 빌드되었음을 나타냅니다.
또한 이는 안정적인 브랜치 다음에 레스모릭적으로 배치되어
패키지 관리자(apt
또는 yum
)가 이를 안정 릴리스 패키지의 업그레이드로 간주하게 만듭니다.
야간 빌드
야간 패키지의 경우,
버전 형식은
<latest stable git tag>+rnightly.<pipeline id>.<omnibus-gitlab SHA>-<build iteration>
입니다.
위에서 언급했듯이, 야간 빌드의 build iteration
은
0
으로 설정됩니다. 이 유형의 예시 버전 문자열은
13.1.1+rnightly.159756.b2b5f05e-0
입니다.
+rnightly
는 패키지가 야간 빌드의 출력임을 나타냅니다.
패키지 관리자에 의해 알파벳 순서로 비교할 경우,
+rnightly
는 최신 안정 버전과 +rfbranch
패키지보다 큽니다.
패키지 관리자는 항상 야간 패키지를 패키지 업그레이드로 다룰 것입니다.
태그 릴리스 빌드
태그 릴리스 빌드의 경우,
Git 태그는 <SemVer version>+<build iteration>
형식이지만,
버전 문자열은 <SemVer version>-<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
입니다.
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
는 GitLab CE 패키지에서 빌드된 Docker의 이미지 태그로, 버전은 13.2.1+rfbranch.163015.32ed1c58-0
입니다.
이 일반 규칙에서 벗어나는 특별한 경우는 아래에 나열되어 있습니다.
QA 미러에서의 트리거된 빌드
QA 미러에서 빌드가 트리거될 때, 패키지 및 QA 실행을 위한 트리거된 파이프라인의 일부로 생성된 Docker 이미지는 트리거가 발생한 위치에 따라 태그가 결정됩니다. 트리거가 omnibus-gitlab
파이프라인에서 발생한 경우, 이미지 태그는 패키지 버전의 슬러그입니다. 그러나 트리거가 GitLab 또는 GitLab-FOSS 파이프라인에서 발생한 경우, 이미지 태그는 해당 파이프라인에 해당하는 커밋의 SHA로 설정됩니다.
이 작업은 Dockerhub 리포지토리에 게시되지 않습니다.
야간 빌드
일반적인 명명 규칙에 추가하여, 예약된 야간 파이프라인에서 빌드된 Docker 이미지는 nightly
태그로 태그가 추가되며, 두 태그 모두 Dockerhub 리포지토리에 푸시됩니다.
gitlab/gitlab-ee:nightly
및 gitlab/gitlab-ce:nightly
는 사용 가능한 두 에디션에 대한 이미지 참조를 나타냅니다.
태그된 릴리스 빌드
일반적인 명명 규칙에 추가하여, 태그가 달린 릴리스 파이프라인에서 빌드된 Docker 이미지는 latest
로 태그가 추가되며, 두 태그 모두 Dockerhub 리포지토리에 푸시됩니다.