From bbf6581214128ae12a6ff32f66a0d03ee57a2e91 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 28 Jan 2020 06:09:01 +0000 Subject: [PATCH] Add latest changes from gitlab-org/gitlab@master --- doc/administration/instance_limits.md | 14 +- doc/development/rake_tasks.md | 11 + doc/user/analytics/code_review_analytics.md | 10 +- .../img/code_review_analytics_v12_8.png | Bin 0 -> 110305 bytes lib/tasks/gitlab/seed/group_seed.rake | 235 ++++++++++++++++++ package.json | 2 +- .../tasks/gitlab/seed/group_seed_rake_spec.rb | 26 ++ yarn.lock | 8 +- 8 files changed, 296 insertions(+), 10 deletions(-) create mode 100644 doc/user/analytics/img/code_review_analytics_v12_8.png create mode 100644 lib/tasks/gitlab/seed/group_seed.rake create mode 100644 spec/tasks/gitlab/seed/group_seed_rake_spec.rb diff --git a/doc/administration/instance_limits.md b/doc/administration/instance_limits.md index 411563d448c..92ca5c0962d 100644 --- a/doc/administration/instance_limits.md +++ b/doc/administration/instance_limits.md @@ -43,6 +43,18 @@ A maximum number of project webhooks applies to each GitLab.com tier. Check the [Maximum number of webhooks (per tier)](../user/project/integrations/webhooks.md#maximum-number-of-webhooks-per-tier) section in the Webhooks page. +To set this limit on a self-hosted installation, run the following in the +[GitLab Rails console](https://docs.gitlab.com/omnibus/maintenance/#starting-a-rails-console-session): + +```ruby +# If limits don't exist for the default plan, you can create one with: +# Plan.default.create_limits! + +Plan.default.limits.update!(project_hooks: 100) +``` + +NOTE: **Note:** Set the limit to `0` to disable it. + ## CI/CD limits ### Number of jobs in active pipelines @@ -73,4 +85,4 @@ To set this limit on a self-hosted installation, run the following in the Plan.default.limits.update!(ci_active_jobs: 500) ``` -Set the limit to `0` to disable it. +NOTE: **Note:** Set the limit to `0` to disable it. diff --git a/doc/development/rake_tasks.md b/doc/development/rake_tasks.md index ff978ee2899..d9b2ace1b5b 100644 --- a/doc/development/rake_tasks.md +++ b/doc/development/rake_tasks.md @@ -54,6 +54,17 @@ 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 diff --git a/doc/user/analytics/code_review_analytics.md b/doc/user/analytics/code_review_analytics.md index 0b501b1a56d..5861afd92a2 100644 --- a/doc/user/analytics/code_review_analytics.md +++ b/doc/user/analytics/code_review_analytics.md @@ -7,17 +7,19 @@ description: "Learn how long your open merge requests have spent in code review, > [Introduced](https://gitlab.com/gitlab-org/gitlab/issues/38062) in [GitLab Starter](https://about.gitlab.com/pricing/) 12.7. Code Review Analytics makes it easy to view the longest-running reviews among open merge requests, -enabling you to take action on individual MRs and reduce overall cycle time. +enabling you to take action on individual merge requests and reduce overall cycle time. NOTE: **Note:** Initially, no data will appear. Data is populated as users comment on open merge requests. ## Overview -Code Review Analytics displays a table of open merge requests which are currently considered to be in code review. -The code review period for an MR is automatically identified as the time since the first non-author comment. +Code Review Analytics displays a table of open merge requests that have at least one non-author comment. The review time is measured from the time the first non-author comment was submitted. +The code review period for a merge request is automatically identified as the time since the first non-author comment. -To access Code Review Analytics, from your project's menu, go to **Project Analytics > Code Review**. +To access Code Review Analytics, from your project's menu, go to **{chart}** **Project Analytics > Code Review**. + +![Code Review Analytics](img/code_review_analytics_v12_8.png "List of code reviews; oldest review first.") - The table is sorted by review duration, helping you quickly find the longest-running reviews which may need intervention or to be broken down into smaller parts. - You can filter the list of MRs by milestone and label. diff --git a/doc/user/analytics/img/code_review_analytics_v12_8.png b/doc/user/analytics/img/code_review_analytics_v12_8.png new file mode 100644 index 0000000000000000000000000000000000000000..228e03e628a8af9aa591c84cab5b81dbb3cb3dbd GIT binary patch literal 110305 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

J&UVeofsc>)@tt?2of5>DDJfBjoEg+*(mN`6` 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 literal 0 HcmV?d00001 diff --git a/lib/tasks/gitlab/seed/group_seed.rake b/lib/tasks/gitlab/seed/group_seed.rake new file mode 100644 index 00000000000..9c98080eff8 --- /dev/null +++ b/lib/tasks/gitlab/seed/group_seed.rake @@ -0,0 +1,235 @@ +# 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 diff --git a/package.json b/package.json index 7f25eb68caf..6b2dd93773b 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@babel/plugin-syntax-dynamic-import": "^7.2.0", "@babel/plugin-syntax-import-meta": "^7.2.0", "@babel/preset-env": "^7.6.2", - "@gitlab/svgs": "^1.90.0", + "@gitlab/svgs": "^1.91.0", "@gitlab/ui": "^9.0.0", "@gitlab/visual-review-tools": "1.5.1", "@sentry/browser": "^5.10.2", diff --git a/spec/tasks/gitlab/seed/group_seed_rake_spec.rb b/spec/tasks/gitlab/seed/group_seed_rake_spec.rb new file mode 100644 index 00000000000..ecf4e9575ab --- /dev/null +++ b/spec/tasks/gitlab/seed/group_seed_rake_spec.rb @@ -0,0 +1,26 @@ +# 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 diff --git a/yarn.lock b/yarn.lock index 170812f7367..bf9b9c1d653 100644 --- a/yarn.lock +++ b/yarn.lock @@ -732,10 +732,10 @@ dependencies: vue-eslint-parser "^6.0.4" -"@gitlab/svgs@^1.90.0": - version "1.90.0" - resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.90.0.tgz#e6fe0ca3d353fcdbd792c10d82444383c33f539d" - integrity sha512-6UikaIMGosmrDAd6Lf3QIJWDM4FwhoGIN+CJuFcWeHDMbZT69LnTabuGfvOQmp2+nlI68baRTSDufaux7m9Ajw== +"@gitlab/svgs@^1.91.0": + version "1.91.0" + resolved "https://registry.yarnpkg.com/@gitlab/svgs/-/svgs-1.91.0.tgz#cf7b28e43779a929a438dcc0c51f39f92551e58e" + integrity sha512-Sz8aaaNnUUtlrk/FPf6FNceu4XsDLBh6g/c6nmzDVGF9kHrfiXfWL0tYAax8vhkrld5vewGHE0bRpq2ZILq0pw== "@gitlab/ui@^9.0.0": version "9.0.0"