Omnibus GitLabの非推奨プロセス

GitLabの非推奨ガイドラインに従うだけでなく、Omnibus GitLabパッケージに非推奨メッセージを追加する必要があります。

非推奨メッセージを通してGitLab管理者に機能の非推奨と削除を通知することは、以下のように構成されます:

  1. 非推奨メッセージの追加
  2. 非推奨メッセージの削除の追跡
  3. 機能削除の追跡。
  4. 非推奨メッセージの削除

あなたは

非推奨メッセージを追加する前に、必ずお読みください:

非推奨メッセージの追加

Gitlab::Deprecations クラスのlist メソッドに、そのクラスに関連する非推奨のリストを保存します。例えば

deprecations = [
          {
            config_keys: %w(gitlab postgresql data_dir),
            deprecation: '11.6',
            removal: '14.0',
            note: "Please see https://docs.gitlab.com/omnibus/settings/database.html#store-postgresql-data-in-a-different-directory for how to use postgresql['dir']"
          },
          {
            config_keys: %w(gitlab sidekiq cluster),
            deprecation: '13.0',
            removal: '14.0',
            note: "Running sidekiq directly is deprecated. Please see https://docs.gitlab.com/ee/administration/operations/extra_sidekiq_processes.html for how to use sidekiq-cluster."
          },
...
]

config_keys

config_keys はキーのリストを表し、/opt/gitlab/embedded/nodes/{fqdn}.json から利用可能な設定ハッシュをたどって特定の設定に到達するために使用できます。例えば、%w(mattermost log_file_directory)mattermost['log_file_directory'] の設定を意味します。同様に、%w(gitlab nginx listen_addresses)gitlab['nginx']['listen_addresses']を意味します。内部ではこれをnginx['listen_addresses']に変換し、/etc/gitlab/gitlab.rbで使用しています。

deprecation

deprecation は、その変更を非推奨とした<major>.<minor> のバージョンを設定する場所です。そのバージョンから、gitlab-ctl reconfigure を実行すると、removal バージョンで設定が削除されることを警告し、提供されたnote を表示します。

removal

removal は、その変更をサポートしなくなる<major>.<minor> バージョンを設定する場所です。これはほとんど常にメジャーリリースであるべきです。Omnibus パッケージは、インストールの最初にスクリプトを実行し、設定に削除され た設定がないことを確認します。サポートされなくなった設定が見つかれば、変更を加える前に、インストー ルは早期に失敗します。同様に、gitlab-ctl reconfigure を実行すると、gitlab.rb 削除された設定がないかファイルを gitlab.rbチェックします。これは、gitlab.rb ユーザーが単に gitlab.rb古いインスタンスから新しいインスタンスにgitlab.rb コピーする状況に対処 gitlab.rbするためです。

note

note は、gitlab-ctl reconfigure 中にユーザーに提供される非推奨メッセージの一部です。この領域を使用して、ユーザーに設定の変更方法を知らせます。多くの場合、新しいドキュメントへのリンクや、設定の名前の変更の場合、新しい設定名を知らせます。

非推奨メッセージの削除の追跡

なぜなら、削除された後でも、管理者がキーを削除したバージョンにアップグレードしようとしても、まだ古い設定をすべてマイグレーションしていないからです。

アップグレードはGitlab::Deprecations.check_config メソッドを実行することでこれを行います。このメソッドでは、GitLab パッケージのアップデートを許可する前に、既存の設定と削除予定日を比較します。

さらに、アップグレード時に複数のGitLabバージョンをスキップするユーザーもいます。そのため、非推奨メッセージは、私たちのアップグレードパスのように、削除マイルストーンの次に予定されている必要な停止でのみ削除されることをお勧めします。例えば

  • 15.8で非推奨メッセージが追加されました。
  • 古い設定は16.0でコードベースから削除されました。
  • 非推奨メッセージは16.3で削除されるはずです。

非推奨メッセージの削除を追跡するため:

  1. Remove Deprecation Message issueテンプレートを使用してフォローアップイシューを作成してください。
  2. 非推奨メッセージの横に、メッセージを削除するためのフォローアップ課題へのリンクを添えたコメントを追加してください。例えば

    {
      config_keys: ...
      deprecation: '15.8', # Remove message Issue: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/XYZ
      removal: '16.0', 
      note: "..."
    },
    

機能削除の追跡

非推奨にしたい機能を削除する正しいマイルストーンを定義してください。次に、機能の削除を追跡するフォローアップイシューを作成し、removal キーの横に、どのイシューが機能の削除を追跡しているかを示すコメントを追加します。例えば

{
  config_keys: ...
  deprecation: '15.8', # Remove message Issue: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/1
  removal: '16.0', # Removal issue: https://gitlab.com/gitlab-org/omnibus-gitlab/-/issues/2
  note: "..."
},

フォローアップ課題には、その機能が削除される予定のマイルストーンを設定してください。

非推奨メッセージの削除

メッセージを削除する準備ができたら、次のようにしてください:

  1. 非推奨の設定が以前のマイルストーンで削除されていることを確認してください。
  2. メッセージの削除が、設定を削除したマイルストーンよりも後の必須停止マイルストーンでリリースされていることを確認してください。
  3. 非推奨メッセージを削除し、フォローアップのイシューをクローズするためにMRをオープンしてください。