From 7e9eda100a3ee13df1fa4f1cc04de73166ad1df9 Mon Sep 17 00:00:00 2001 From: Michael Kozono Date: Thu, 21 Feb 2019 10:18:54 -0800 Subject: Add dev rake task for seeding lots of projects --- lib/tasks/dev.rake | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/lib/tasks/dev.rake b/lib/tasks/dev.rake index 4beb94eeb8e..6d3e181744c 100644 --- a/lib/tasks/dev.rake +++ b/lib/tasks/dev.rake @@ -12,4 +12,41 @@ namespace :dev do task load: :environment do Rails.application.eager_load! end + + desc "GitLab | Create many test groups and projects" + task :populate, [:username, :prefix, :group_start, :group_end, :projects_per_group] => :environment do |task, args| + user = User.find_by!(username: args.username || "root") + prefix = args.prefix || "test-1" + group_start = (args.group_start || 1).to_i + group_end = (args.group_end || 5).to_i + projects_per_group = (args.projects_per_group || 100).to_i + + ActiveRecord::Base.logger = nil + + group_start.upto(group_end).each do |gid| + group_name = "#{prefix}-group-#{gid}" + + ActiveRecord::Base.transaction do + group = Group.create!(path: group_name, name: group_name, owner: user) + print "Group #{gid}: " + + 1.upto(projects_per_group).each do |pid| + project_name = "project-#{pid}" + + project = Projects::CreateService.new( + user, + name: project_name, path: project_name, namespace_id: group.id + ).execute + + if project.errors.any? + raise "Failed: #{gid}.#{pid}:\n\t#{project.errors.full_messages.join("\n\t")}" + end + + print "." if pid%10==0 + end + + print "\n" + end + end + end end -- cgit v1.2.1