Add namespace settings attributes pipeline to BulkImports
What does this MR do and why?
Add a new pipelines to the bulk import group to migrate the prevent_sharing_groups_outside_hierarchy
that are stored in the namespace_settings
table.
Related to: #353955 (closed)
Implementation Details
This pipeline download and decompress namespace_settings.ndjson.gz
that is generated in the source instance, then fetches from the NDJSON file the attributes that need to be imported and finally use the Groups::UpdateService
to update the namespace_settings
associated with the group.
At the moment, only the attribute prevent_sharing_groups_outside_hierarchy
is being read from the file. But in the future, we can use the pipeline to migrate extra attributes of the namespace_settings.
Bear in mind that the namespace_settings
relation had to be added to the export process as the BulkImport uses the same code to generate the export file. Meaning that the exported group bundle file will now contain the namespace_settings.ndjson
file. But the file is configured to be ignored during the import of the bundle file because the Import/Export
can't handle the namespace_settings
relation correctly.
This pipeline should be compatible with GitLab instances that are outdated and still don't generate the namespace_settings.ndjson file because if the file can't be downloaded, the pipeline will be marked as failed and the import process will continue.
Screenshots or screen recordings
How to set up and validate locally
- Create a top-level group with subgroups
- Navigate to Group > Settings > General > Permissions and group features
- Check the
Prevent members from sending invitations to groups outside of GROUP_NAME and its subgroups
setting - Migrate the top-level group using GitLab Group Migration as a top-level group
- Wait for the migration to complete and navigate to the settings page of the newly created group
- Check that the setting has been migrated
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.