ソフトウェア・コンポーネントのアップグレード
Linuxパッケージは、GitLabによって開発されたものや、フリーでオープンソースのプロジェクトから提供されたものなど、一連のソフトウェアコンポーネントから作られています。ソフトウェア・コンポーネントは、新機能やバグ修正、セキュリティ脆弱性の発見に応じて個別にアップデートすることができます。
ソフトウェアコンポーネントのアップグレードは、特に後方互換性のない変更が行われた場合、リスクが高くなる可能性があります。セマンティック・バージョニング]を考慮したり、変更履歴を調べたり、リリースノートを調べたりすることで、アップグレードに伴うリスクの大きさを知ることができます。どのような場合でも、アップグレードはマージする前に徹底的にテストされるべきです。
CNGプロジェクトは、これらと同じソフトウェアコンポーネントのいくつかを使用しています。両方のプロジェクトに共通するコンポーネントは、両方で更新されるべきです。
ソフトウェアコンポーネントの種類
Linuxパッケージで使用されるソフトウェアコンポーネントには2種類あります:
- 外部ソフトウェア・コンポーネント
- 内部ソフトウェアコンポーネント
外部ソフトウェア・コンポーネント
外部ソフトウェアコンポーネントのソースは、外部サイトから直接ダウンロードするか、omnibus-mirror
リポジトリからコピーします。コンポーネントは、git clone
、ソース tarball からの抽出、gem install
(Ruby モジュールの場合)、またはpip
install
(Python モジュールの場合) を使用して提供することができます。
内部ソフトウェアコンポーネント
内部ソフトウェアコンポーネントはGitLabと外部の貢献者によって開発されます。内部ソフトウェアコンポーネントのソースはプロジェクトのGitLabリポジトリからダウンロードされます。ビルドで使用されるバージョンは、プロジェクトの対応する*VERSION
ファイルに含まれる Git リファレンスによって設定されます。これらのバージョンは環境変数で上書きすることができます。詳細については、GitLabコンポーネントの特定のブランチやバージョンを使用するを参照してください。
内部ソフトウェアコンポーネントのアップデートは、対応するリポジトリへのマージリクエストによって行われます。
内部ソフトウェアコンポーネントの更新ワークフロー
内部ソフトウェアコンポーネントを更新するための典型的なワークフローです。
フォーク/ブランチの作成
内部貢献者はgitlab-org/omnibus-gitlab
リポジトリのフォークを作成してください。
ターゲットブランチから新しいブランチを作成します(通常はgitlab-org/omnibus-gitlab
リポジトリのmaster
です。
を変更します。config/software/<component.rb>
-
config/software
ディレクトリで、更新したいコンポーネントに対応する設定ファイルを見つけます。例えば、config/software/prometheus.rb
は Prometheus コンポーネントに使用されます。 -
バージョンを更新したいバージョンに変更します。該当する場合は、対応する
sha256
も、対応するバージョンのソース tarball の値に変更します。
必要なパッチを追加または変更します。
新しいコンポーネントのバージョンは
- 新しいパッチの追加
- 既存のパッチの削除
- 既存のパッチの変更
すべてのパッチファイルはconfig/patches/<component name>
にあります。そして、対応するconfig/software/<component name>.rb
ファイルで参照されます。例は以下にあります:
ブランチをプッシュ
ブランチをアップストリームリポジトリにプッシュします。
マージリクエストの作成(MR)
開発ブランチとターゲットブランチを使用してマージリクエストを作成します。
ビルド
Linux パッケージをビルドします:
- CI/CDシステムを使用します。
- ローカルLinuxパッケージのビルドを使用してローカルにビルドします。
更新されたソフトウェアコンポーネントのマージリクエストを受け付ける前に、CI/CD システムを使用してすべてのアーキテクチャでビルドする必要があります。
テスト
出来上がったLinuxパッケージをインストールし、コンポーネントの変更をテストします。
ソフトウェア・コンポーネントのアップデートのテスト
最小テスト要件
ソフトウェア・コンポーネントを更新する際には、最低限、以下のテストを実施する必要があります。
- GitLab Enterprise Edition(EE) のビルドを、サポートされているすべてのプラットフォームで成功させてください。
-
qa-test
CI/CD テストジョブを GitLab Enterprise Edition と GitLab Community Edition の両方で実行します。 - インストールし、コンポーネントのバージョンがアップグレードされたことを確認します。
- ソフトウェアコンポーネントの基本的な機能を確認します。
追加テストはほとんどの場合必要で、ソフトウェアコンポーネントによって異なります。
テスト計画
個々のコンポーネントのテスト計画です。これらはマージリクエストにコピーされ、その実行が記録されるようになっています。
すべてのコンポーネントがここに記載されているわけではありません。あなたが作業しているコンポーネントのアップグレードについて、マージリクエストを作成して追加することを検討してください。test-plans/upgrade-component-testplan-template.md
を出発点として使用してください。
これらのテスト計画は網羅的なものではありません。コンポーネントに加えられた変更の度合いに応じて、補足する必要があるかもしれません。これらの追加をマージリクエストに記録し、ここに追加することを検討してください。テスト計画ファイルを作成するときは、次のファイル名パターンを使用してください:
upgrade-<component-name>-testplan.md
そして、test-plans/index.md
にリンクを追加してください。