GitLab シェルのプロセス

新しいバージョンのリリース

GitLab ShellはGitタグによってバージョン管理されており、Railsアプリケーションで使われるバージョンはGITLAB_SHELL_VERSION

各バージョンには、生のバージョンとタグのバージョンがあります:

  • 生のバージョンはバージョン番号です。例えば、15.2.8.
  • タグのバージョンは、生のバージョンの前にv を付けたものです。たとえば、v15.2.8

GitLab Shell の新バージョンをリリースし、そのバージョンを Rails アプリケーションで使えるようにするには

  1. マージリクエストを作成し、CHANGELOGタグのバージョンでVERSION ファイルを生のバージョンで更新します。
  2. メンテナにマージリクエストのレビューとマージを依頼してください。あなたがすでにメンテナであれば、2人目のメンテナのレビューは必要ありません。
  3. 新しい Git タグをタグのバージョンと一緒に追加します。
  4. Rails アプリケーションのGITLAB_SHELL_VERSION生のバージョンに更新します。

    note
    これは別のマージリクエストとして行うこともできますし、最新の GitLab Shell の変更を使ったマージリクエストとして行うこともできます。

セキュリティリリース

GitLab ShellはGitLab用に作成したパッケージに含まれています。GitLabの各バージョンは、GITLAB_SHELL_VERSION ファイルで使用するGitLab Shellのバージョンを指定しています。この仕様のおかげで、GitLab Shellのセキュリティ修正はGitLabのセキュリティリリースのワークフローと密接に結びついています。

GitLab Shellのセキュリティ修正には、2組のマージリクエストが必要です:

  1. gitlab-org/security/gitlab-shell リポジトリでの修正と、以前のバージョンの GitLab Shell へのバックポートです。
  2. gitlab-org/security/gitlab リポジトリにある、GitLab セキュリティリリースに含まれる GitLab Shell のバージョンを変更するためのマージリクエスト。

最初のステップとして、gitlab-org/security/gitlab-shellmain をターゲットとした修正を加えたマージリクエストを作成することができます。マージリクエストがメンテナによって承認されたら、GitLab Shell の過去の 3 つのバージョンを対象としたバックポートを作成しなければなりません。これらのバージョンの安定ブランチは存在しないかもしれません。安定版ブランチは、3つ前の GitLab リリースで使われていた GitLab Shell タグやバージョンから作成しなければなりません。

特定の GitLab 安定版リリースで使われている GitLab Shell のバージョンを調べるには、13-9-stable-ee を興味のあるバージョンに置き換えてこのコマンドを実行します。これらのコマンドは、13.9 バージョンの GitLab で使われているバージョンを表示します:

git fetch security 13-9-stable-ee
git show refs/remotes/security/13-9-stable-ee:GITLAB_SHELL_VERSION

GitLabのセキュリティリリースの近くでは、メンテナは修正とバックポートをマージし、必要なGitLab Shellのバージョンをすべてカットする必要があります。これにより、gitlab-org/security/gitlabGITLAB_SHELL_VERSION をバンプすることができます。GitLabマージリクエストは、一般的なGitLabセキュリティリリースプロセスで処理されます。

セキュリティリリースが完了したら、GitLab Shellのメンテナはタグとmaingitlab-org/gitlab-shell リポジトリに同期する責任があります。