Rakeタスクのアップロードとマイグレーション
gitlab:uploads:migrate
は、異なるストレージタイプ間でアップロードを移行します。
オブジェクトストレージへの移行
GitLabのアップロード用にオブジェクトストレージを設定した後、このタスクを使って既存のアップロードをローカルストレージからリモートストレージに移行します。
GitLabでのオブジェクトストレージの使用についてはこちらをご覧ください。
オールインワン・レーキ・タスク
GitLabは、アップロードされたすべてのファイル(例えばアバター、ロゴ、添付ファイル、ファビコンなど)をオブジェクトストレージに一度に移行するラッパーRakeタスクを提供します。 ラッパータスクは、それぞれのカテゴリーに該当するファイルを一つずつ移行する個別のRakeタスクを呼び出します。
これらの個々のRakeタスクについては、次のセクションで説明します。
すべてのアップロードをローカル・ストレージからオブジェクト・ストレージに移行するには、以下を実行します:
オムニバス・インストール
gitlab-rake "gitlab:uploads:migrate:all"
ソースインストール
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:migrate:all
個別のレーキ作業
すでにオールインワンのRakeタスクを実行していれば、これらの個別タスクを実行する必要はありません。
Rakeタスクは、移行するアップロードを見つけるために3つのパラメータを使用します:
パラメータ | タイプ | 説明 |
---|---|---|
uploader_class
| 列 | 移行元のアップローダーのタイプ。 |
model_class
| 列 | 移行元モデルのタイプ。 |
mount_point
| 文字列/記号 | アップローダーが取り付けられているモデルのカラムの名前。 |
このタスクはデフォルトのバッチサイズを上書きする環境変数も受け付けます:
変数 | タイプ | 説明 |
---|---|---|
BATCH
| 整数 | バッチのサイズを指定します。 デフォルトは200です。 |
以下は、個々のタイプのアップロードに対してgitlab:uploads:migrate
を実行する方法を示しています。
オムニバス・インストール
# gitlab-rake gitlab:uploads:migrate[uploader_class, model_class, mount_point]
# Avatars
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, Project, :avatar]"
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, Group, :avatar]"
gitlab-rake "gitlab:uploads:migrate[AvatarUploader, User, :avatar]"
# Attachments
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Note, :attachment]"
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :logo]"
gitlab-rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :header_logo]"
# Favicon
gitlab-rake "gitlab:uploads:migrate[FaviconUploader, Appearance, :favicon]"
# Markdown
gitlab-rake "gitlab:uploads:migrate[FileUploader, Project]"
gitlab-rake "gitlab:uploads:migrate[PersonalFileUploader, Snippet]"
gitlab-rake "gitlab:uploads:migrate[NamespaceFileUploader, Snippet]"
gitlab-rake "gitlab:uploads:migrate[FileUploader, MergeRequest]"
# Design Management design thumbnails
gitlab-rake "gitlab:uploads:migrate[DesignManagement::DesignV432x230Uploader, DesignManagement::Action, :image_v432x230]"
ソースインストール
RAILS_ENV=production
をすべてのタスクに使用してください。# sudo -u git -H bundle exec rake gitlab:uploads:migrate
# Avatars
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AvatarUploader, Project, :avatar]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AvatarUploader, Group, :avatar]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AvatarUploader, User, :avatar]"
# Attachments
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AttachmentUploader, Note, :attachment]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :logo]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[AttachmentUploader, Appearance, :header_logo]"
# Favicon
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[FaviconUploader, Appearance, :favicon]"
# Markdown
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[FileUploader, Project]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[PersonalFileUploader, Snippet]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[NamespaceFileUploader, Snippet]"
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[FileUploader, MergeRequest]"
# Design Management design thumbnails
sudo -u git -H bundle exec rake "gitlab:uploads:migrate[DesignManagement::DesignV432x230Uploader, DesignManagement::Action]"
ローカルストレージへの移行
何らかの理由でオブジェクト ストレージを無効にする必要がある場合は、まずデータをオブジェクト ストレージからローカル ストレージに移行する必要があります。
オールインワン・レーキ・タスク
GitLabは、アップロードされたすべてのファイル(例えば、アバター、ロゴ、添付ファイル、ファビコン)をワンステップでローカルストレージに移行するラッパーRakeタスクを提供します。 ラッパータスクは、これらのカテゴリに該当するファイルを一つずつ移行する個別のRakeタスクを呼び出します。
これらのRakeタスクの詳細については、個々のRakeタスクを参照してください。この場合のタスク名はgitlab:uploads:migrate_to_local
です。
アップロードをオブジェクトストレージからローカルストレージに移行するには:
-
gitlab.rb
のuploads
の設定でdirect_upload
とbackground_upload
の両方を無効にします。 -
Rakeタスクを実行します:
オムニバス・インストール
gitlab-rake "gitlab:uploads:migrate_to_local:all"
ソースインストール
sudo RAILS_ENV=production -u git -H bundle exec rake gitlab:uploads:migrate_to_local:all
Rakeタスクを実行した後、オブジェクト・ストレージを設定する手順で説明した変更を元に戻すことで、オブジェクト・ストレージを無効にすることができます。