パッケージとDockerイメージのバージョン形式

パッケージ

omnibus-gitlab 継続的インテグレーションパイプラインによってビルドされたパッケージは、<build_version>-<build_iteration> という形式のバージョン文字列を持ちます。パイプラインは通常3種類のパッケージを生成します:

  • 機能ブランチビルド
  • 夜間ビルド
  • タグ付きリリースビルド
note
バージョン文字列のbuild_iteration の部分は特定の意味を持ち、build_version の計算方法に貢献します。次のセクションは、build_iteration がバージョン文字列の最後にあっても、最初に理解されなければならないことを念頭に置いて書かれています。

ビルドの繰り返し

バージョン文字列は、バンドルされているコンポーネントの変更を含まない、関連するロジックの変更をパッケージ化するときにbuild_iteration を使用します。

Release TypeExample Pipelines build_iteration String ---  non-taggedfeatureブランチ、ナイトリービルド0 taggedリリース(ce|ee).<OMNIBUS_RELEASE>です。

エディションコンポーネントのceeeは、aptyum のようなパッケージマネージャに、EntepriseEdition のパッケージを Community Edition からのアップグレードとして扱うように指示します。

OMNIBUS_RELEASE コンポーネントは非推奨となり、常に0 に設定されます。歴史的に、OMNIBUS_RELEASEomnibus-gitlab をターゲットとした素早いバグ修正を示しており、GitLab Rails や他のバンドルコンポーネントは変更されていませんでした。アップデートはユーザーに影響を与えるため、頻繁にセマンティックバージョンのアップデートが必要でした。このため、OMNIBUS_RELEASE は実際には役に立たず、もはや意味がありません。

ビルドバージョン

バージョン文字列のビルドバージョンのコンポーネントは、パッケージが機能ブランチなのか、ナイトリービルドなのか、タグ付きリリースなのかによって変わります。

通常の feature ブランチビルド

通常の機能ブランチのビルドでは、バージョン形式は<latest stable git tag>+rfbranch.<pipeline id>.<omnibus-gitlab SHA>-<build iteration> です。

上述したように、通常の機能ブランチビルドのbuild iteration0 に設定されます。このタイプのバージョン文字列の例は13.1.1+rfbranch.159743.eb538eaf-0 です。

+rfbranch という文字列は、通常の機能ブランチからビルドされたパッケージを表します。また、aptyum のようなパッケージマネージャが、安定版リリースパッケージからのアップグレードとみなすように、字句解析的に安定版ブランチの後に配置します。

ナイトリービルド

ナイトリーパッケージの場合、バージョン形式は<latest stable git tag>+rnightly.<pipeline id>.<omnibus-gitlab SHA>-<build iteration> です。

前述のように、夜間ビルドのbuild iteration0 に設定されます。このタイプのバージョン文字列の例は13.1.1+rnightly.159756.b2b5f05e-0 です。

+rnightly そのパッケージがナイトリービルドの出力 +rnightlyであることを示します。+rnightly パッケージマネージャがアルファベット順に比較した場合 +rnightly、最新の安定版 (stable) と+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):<slug of package version>

例えば、dev.gitlab.org:5005/gitlab/omnibus-gitlab/gitlab-ce:13.2.1-rfbranch.163015.32ed1c58-0 はバージョン13.2.1+rfbranch.163015.32ed1c58-0

この一般的なルールから外れる特別なケースを以下に示します。

QA ミラーでのトリガービルド

トリガーされたパイプラインの一部として作成されたDockerイメージ(PackageとQA run用)のタグは、トリガーの発生元によって決まります。トリガーがomnibus-gitlab パイプラインから発生した場合、イメージタグはパッケージバージョンのスラッグになります。しかし、トリガーが GitLab または GitLab-FOSS パイプラインから発生した場合、イメージタグはそのパイプラインに対応するコミットの SHA に設定されます。

これらのジョブはDockerhubリポジトリには公開されません。

ナイトリービルド

一般的な命名スキームに加えて、スケジュールされた夜間パイプラインでビルドされたDockerイメージにはnightly タグが付けられ、両方のタグはDockerhubリポジトリにもプッシュされます。

gitlab/gitlab-ee:nightlygitlab/gitlab-ce:nightly は、利用可能な2つのエディションのイメージリファレンスを示します。

タグ付きリリースビルド

一般的な命名スキームに加えて、タグ付きリリースパイプラインによってビルドされたDockerイメージにもlatest