バージョン管理されたスニペットへの移行

GitLab 13.0から導入されました

GitLab 13.0では、GitLabスニペットはGitリポジトリによってバックアップされます。 これは、スニペットコンテンツがリポジトリに保存され、ユーザーがGitを通して直接更新できることを意味します。

とはいえ、既存のGitLabスニペットをこの新機能に移行する必要があります。 各スニペットについて、新しいリポジトリが作成され、スニペットの内容はスニペットで使われているファイル名を持つファイル内のリポジトリにコミットされます。

GitLabインスタンスが13.0またはそれ以上のバージョンにアップグレードされると、GitLabはバックグラウンドマイグレーションによってこのマイグレーションを自動的に実行します。 しかし、いずれかのスニペットでマイグレーションが失敗した場合、それらを個別にマイグレーションする必要があります。

以下のRakeタスクはその手助けになります。

特定のスニペットをGitに移行

スニペットの範囲を移行したい場合は、以下のようにタスクを実行してください。

Omnibusインストールの場合は、以下を実行してください:

sudo gitlab-rake gitlab:snippets:migrate SNIPPET_IDS=1,2,3,4

ソースコードからインストールする場合は、以下を実行してください:

bundle exec rake gitlab:snippets:migrate SNIPPET_IDS=1,2,3,4

マイグレーションプロセスでサポートされるIDの数には、デフォルトで上限 (100) があります。この上限は、環境変数LIMITを使って変更することができます。

sudo gitlab-rake gitlab:snippets:migrate SNIPPET_IDS=1,2,3,4 LIMIT=50

ソースコードからインストールする場合は、以下を実行してください:

bundle exec rake gitlab:snippets:migrate SNIPPET_IDS=1,2,3,4 LIMIT=50

スニペットのバックグラウンドマイグレーションが実行されているかどうかを表示します。

スニペット・バックグラウンド・マイグレーションが実行されているかどうかのステータスを確認したい場合は、以下のタスクを使用できます。

Omnibusインストールの場合は、以下を実行してください:

sudo gitlab-rake gitlab:snippets:migration_status

ソースコードからインストールする場合は、以下を実行してください:

bundle exec rake gitlab:snippets:migration_status RAILS_ENV=production

非移行スニペット一覧

以下のタスクで、まだ移行されていないスニペットや移行に失敗したスニペットのIDをすべて取得できます。

Omnibusインストールの場合は、以下を実行してください:

sudo gitlab-rake gitlab:snippets:list_non_migrated

ソースコードからインストールする場合は、以下を実行してください:

bundle exec rake gitlab:snippets:list_non_migrated RAILS_ENV=production

非移行のスニペット数が大きくなる可能性があるため、デフォルトでは返されるID数のサイズを100に制限しています。環境変数LIMITを使用することで、この制限を変更することができます。

sudo gitlab-rake gitlab:snippets:list_non_migrated LIMIT=200

ソースコードからインストールする場合は、以下を実行してください:

bundle exec rake gitlab:snippets:list_non_migrated RAILS_ENV=production LIMIT=200