Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
gitlab-ce
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
1
Merge Requests
1
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
gitlab-ce
Commits
fbdd20db
Commit
fbdd20db
authored
Jan 28, 2020
by
Rémy Coutable
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Merge branch 'georgekoltsov/group_seeder_rake_task' into 'master'"
This reverts merge request !21657
parent
faa22f56
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
0 additions
and
295 deletions
+0
-295
doc/development/rake_tasks.md
doc/development/rake_tasks.md
+0
-11
ee/spec/tasks/gitlab/seed/group_seed_rake_spec.rb
ee/spec/tasks/gitlab/seed/group_seed_rake_spec.rb
+0
-23
lib/tasks/gitlab/seed/group_seed.rake
lib/tasks/gitlab/seed/group_seed.rake
+0
-235
spec/tasks/gitlab/seed/group_seed_rake_spec.rb
spec/tasks/gitlab/seed/group_seed_rake_spec.rb
+0
-26
No files found.
doc/development/rake_tasks.md
View file @
fbdd20db
...
...
@@ -54,17 +54,6 @@ By default, this seeds an average of 10 issues per week for the last 52 weeks
per project. All issues will also be randomly labeled with team, type, severity,
and priority.
#### Seeding groups with sub-groups
You can seed groups with sub-groups that contain milestones/projects/issues
with the
`gitlab:seed:group_seed`
task:
```
shell
bin/rake
"gitlab:seed:group_seed[subgroup_depth, username]"
```
Group are additionally seeded with epics if GitLab instance has epics feature available.
### Automation
If you're very sure that you want to
**wipe the current database**
and refill
...
...
ee/spec/tasks/gitlab/seed/group_seed_rake_spec.rb
deleted
100644 → 0
View file @
faa22f56
# frozen_string_literal: true
require
'rake_helper'
describe
'gitlab:seed:group_seed rake task'
do
let
(
:username
)
{
'group_seed'
}
let!
(
:user
)
{
create
(
:user
,
username:
username
)
}
let
(
:task_params
)
{
[
2
,
username
]
}
before
do
Rake
.
application
.
rake_require
(
'tasks/gitlab/seed/group_seed'
)
end
subject
{
run_rake_task
(
'gitlab:seed:group_seed'
,
task_params
)
}
it
'performs group seed successfully'
do
expect
{
subject
}.
not_to
raise_error
group
=
user
.
groups
.
first
expect
(
group
.
epics
.
count
).
to
be
2
end
end
lib/tasks/gitlab/seed/group_seed.rake
deleted
100644 → 0
View file @
faa22f56
# frozen_string_literal: true
# Seed test groups with:
# 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)
#
# @example
# bundle exec rake "gitlab:seed:group_seed[5, root]"
#
namespace
:gitlab
do
namespace
:seed
do
desc
'Seed groups with sub-groups/projects/epics/milestones for Group Import testing'
task
:group_seed
,
[
:subgroups_depth
,
:username
]
=>
:gitlab_environment
do
|
_t
,
args
|
require
'sidekiq/testing'
GroupSeeder
.
new
(
subgroups_depth:
args
.
subgroups_depth
,
username:
args
.
username
).
seed
end
end
end
class
GroupSeeder
PROJECT_URL
=
'https://gitlab.com/gitlab-org/gitlab-test.git'
attr_reader
:all_group_ids
def
initialize
(
subgroups_depth
:,
username
:)
@subgroups_depth
=
subgroups_depth
.
to_i
@user
=
User
.
find_by_username
(
username
)
@group_names
=
Set
.
new
@resource_count
=
2
@all_groups
=
{}
@all_group_ids
=
[]
end
def
seed
create_groups
puts
'Done!'
end
def
create_groups
create_root_group
create_sub_groups
create_users_and_members
create_epics
if
Gitlab
.
ee?
create_labels
create_milestones
Sidekiq
::
Testing
.
inline!
do
create_projects
end
end
def
create_users_and_members
all_group_ids
.
each
do
|
group_id
|
@resource_count
.
times
do
|
_
|
user
=
create_user
create_member
(
user
.
id
,
group_id
)
end
end
end
def
create_root_group
root_group
=
::
Groups
::
CreateService
.
new
(
@user
,
group_params
).
execute
track_group_id
(
1
,
root_group
.
id
)
end
def
create_sub_groups
(
2
..
@subgroups_depth
).
each
do
|
level
|
parent_level
=
level
-
1
current_level
=
level
parent_groups
=
@all_groups
[
parent_level
]
parent_groups
.
each
do
|
parent_id
|
@resource_count
.
times
do
|
_
|
sub_group
=
::
Groups
::
CreateService
.
new
(
@user
,
group_params
(
parent_id:
parent_id
)).
execute
track_group_id
(
current_level
,
sub_group
.
id
)
end
end
end
end
def
track_group_id
(
depth_level
,
group_id
)
@all_groups
[
depth_level
]
||=
[]
@all_groups
[
depth_level
]
<<
group_id
@all_group_ids
<<
group_id
end
def
group_params
(
parent_id:
nil
)
name
=
unique_name
{
name:
name
,
path:
name
,
parent_id:
parent_id
}
end
def
unique_name
name
=
ffaker_name
name
=
ffaker_name
until
@group_names
.
add?
(
name
)
name
end
def
ffaker_name
FFaker
::
Lorem
.
characters
(
5
)
end
def
create_user
User
.
create!
(
username:
FFaker
::
Internet
.
user_name
,
name:
FFaker
::
Name
.
name
,
email:
FFaker
::
Internet
.
email
,
confirmed_at:
DateTime
.
now
,
password:
Devise
.
friendly_token
)
end
def
create_member
(
user_id
,
group_id
)
roles
=
Gitlab
::
Access
.
values
GroupMember
.
create
(
user_id:
user_id
,
access_level:
roles
.
sample
,
source_id:
group_id
)
end
def
create_epics
all_group_ids
.
each
do
|
group_id
|
@resource_count
.
times
do
|
_
|
group
=
Group
.
find
(
group_id
)
epic_params
=
{
title:
FFaker
::
Lorem
.
sentence
(
6
),
description:
FFaker
::
Lorem
.
paragraphs
(
3
).
join
(
"
\n\n
"
),
author:
group
.
users
.
sample
,
group:
group
}
Epic
.
create!
(
epic_params
)
end
end
end
def
create_labels
all_group_ids
.
each
do
|
group_id
|
@resource_count
.
times
do
|
_
|
group
=
Group
.
find
(
group_id
)
label_title
=
FFaker
::
Product
.
brand
Labels
::
CreateService
.
new
(
title:
label_title
,
color:
"#
#{
Digest
::
MD5
.
hexdigest
(
label_title
)[
0
..
5
]
}
"
).
execute
(
group:
group
)
end
end
end
def
create_milestones
all_group_ids
.
each
do
|
group_id
|
@resource_count
.
times
do
|
i
|
group
=
Group
.
find
(
group_id
)
milestone_params
=
{
title:
"v
#{
i
}
.0"
,
description:
FFaker
::
Lorem
.
sentence
,
state:
[
:active
,
:closed
].
sample
}
Milestones
::
CreateService
.
new
(
group
,
group
.
members
.
sample
,
milestone_params
).
execute
end
end
end
def
create_projects
all_group_ids
.
each
do
|
group_id
|
group
=
Group
.
find
(
group_id
)
@resource_count
.
times
do
|
i
|
_
,
project_path
=
PROJECT_URL
.
split
(
'/'
)[
-
2
..-
1
]
project_path
.
gsub!
(
'.git'
,
''
)
params
=
{
import_url:
PROJECT_URL
,
namespace_id:
group
.
id
,
name:
project_path
.
titleize
+
FFaker
::
Lorem
.
characters
(
10
),
description:
FFaker
::
Lorem
.
sentence
,
visibility_level:
0
,
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
)
Gitlab
::
Seeder
.
quiet
do
seeder
=
Quality
::
Seeders
::
Issues
.
new
(
project:
project
)
seeder
.
seed
(
backfill_weeks:
2
,
average_issues_per_week:
2
)
end
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
spec/tasks/gitlab/seed/group_seed_rake_spec.rb
deleted
100644 → 0
View file @
faa22f56
# frozen_string_literal: true
require
'rake_helper'
describe
'gitlab:seed:group_seed rake task'
do
let
(
:username
)
{
'group_seed'
}
let!
(
:user
)
{
create
(
:user
,
username:
username
)
}
let
(
:task_params
)
{
[
2
,
username
]
}
before
do
Rake
.
application
.
rake_require
(
'tasks/gitlab/seed/group_seed'
)
end
subject
{
run_rake_task
(
'gitlab:seed:group_seed'
,
task_params
)
}
it
'performs group seed successfully'
do
expect
{
subject
}.
not_to
raise_error
group
=
user
.
groups
.
first
expect
(
user
.
groups
.
count
).
to
be
3
expect
(
group
.
projects
.
count
).
to
be
2
expect
(
group
.
members
.
count
).
to
be
3
expect
(
group
.
milestones
.
count
).
to
be
2
end
end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment