Groups and subgroups seeding rake task is broken
Description
While working on adding requirement for Organizations, I ran into an issue with the group seed rake task.
First issue was a validation issue that could be fixed by adding a path to the user factory
# spec/factories/users.rb:24
user.assign_personal_namespace(create(:organization, path: "org-for-#{user.name.parameterize}")) if assign_ns
But then, another error shows up which is more complicated:
NoMethodError: undefined method flat_map' for #<Project id:22 4g9dz/gitlab-testcc2hjuntp3>`
Seems like the Project object is not a ApplicationRecord.
Steps to reproduce
on master branch, using gdk:
bundle exec rake "gitlab:seed:group_seed[3, root, default]"
Implementation Guide
- Apply the following patch
Subject: Remove issues from group seeder
---
Index: doc/development/rake_tasks.md
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md
--- a/doc/development/rake_tasks.md (revision ee79b077284e2ff2add406cf3e5e79a0b1cfbafe)
+++ b/doc/development/rake_tasks.md (date 1749449404821)
@@ -74,7 +74,7 @@
#### Seeding groups with subgroups
-You can seed groups with subgroups that contain milestones/projects/issues
+You can seed groups with subgroups that contain milestones/projects
with the `gitlab:seed:group_seed` task:
```shell
Index: lib/tasks/gitlab/seed/group_seed.rake
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/lib/tasks/gitlab/seed/group_seed.rake b/lib/tasks/gitlab/seed/group_seed.rake
--- a/lib/tasks/gitlab/seed/group_seed.rake (revision ee79b077284e2ff2add406cf3e5e79a0b1cfbafe)
+++ b/lib/tasks/gitlab/seed/group_seed.rake (date 1756205773086)
@@ -4,10 +4,6 @@
# 1. 2 Subgroups per level
# 1. 2 Users & group members per group
# 1. 2 Epics, 2 Milestones & 2 Projects per group
-# 1. Project issues
-#
-# It also assigns each project's issue with one of group's or ascendants
-# groups milestone & epic.
#
# @param subgroups_depth - number of subgroup levels
# @param username - user creating subgroups (i.e. GitLab admin)
@@ -207,37 +203,13 @@
skip_disk_validation: true
}
- project = nil
-
Sidekiq::Worker.skipping_transaction_check do
project = ::Projects::CreateService.new(@user, params).execute
project.send(:_run_after_commit_queue)
project.import_state.send(:_run_after_commit_queue)
project.repository.expire_all_method_caches
end
-
- create_project_issues(project)
- assign_issues_to_epics_and_milestones(project)
end
end
end
-
- def create_project_issues(project)
- seeder = Quality::Seeders::Issues.new(project: project)
- seeder.seed(backfill_weeks: 2, average_issues_per_week: 2)
- end
-
- def assign_issues_to_epics_and_milestones(project)
- group_ids = project.group.self_and_ancestors.map(&:id)
-
- project.issues.each do |issue|
- issue_params = {
- milestone: Milestone.where(group: group_ids).sample
- }
-
- issue_params[:epic] = Epic.where(group: group_ids).sample if Gitlab.ee?
-
- issue.update(issue_params)
- end
- end
end
Edited by Shane Maglangit