Skip to content

Add Project Avatar & Group Uploads to GitLab Migration

What does this MR do and why?

Related to #339416 (closed)

this feature is behind bulk_import_projects feature flag that is currently off by default (and disabled on .com).

This MR adds Project Avatar & Group Uploads migration when using Group Migration that includes projects (https://docs.gitlab.com/ee/user/group/import/).

The original intend of this MR was to introduce a similar pipeline to GroupAvatarPipeline in order to migrate just project avatar, but because of GitLab API inconsistency it's harder to retrieve project avatar of a project, compared to group. It is possible to retrieve group avatar binary using api/v4/groups/.../avatar but there is no such endpoint for projects.

Because we already export avatar as part of UploadsPipeline and ignore it, instead we can import avatar as part of UploadsPipeline, add Group uploads migration and remove GroupAvatarPipeline altogether. This way when we migrate uploads we migrate avatar as well.

Screenshots or screen recordings

groupuploads

How to set up and validate locally

  1. Feature.enable(:bulk_import).
  2. Feature.enable(:bulk_import_projects).
  3. Create a top level group and project in it.
  4. Create project and group uploads in both group and project. Upload group and project avatars.
  5. Go to /groups/new#import-group-pane page and enter instance url and access token (needs to be api & read_repository scope).
  6. Select newly created group and click Import.
  7. Wait for Group import to complete and verify imported uploads & avatars. They should be present.

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by George Koltsov

Merge request reports