Commit e4875cd2 authored by Mario de la Ossa's avatar Mario de la Ossa

Backport of elastic-test-repos from EE

parent 2ab68a23
require './spec/support/sidekiq' require './spec/support/sidekiq'
# rubocop:disable Rails/Output
Sidekiq::Testing.inline! do Sidekiq::Testing.inline! do
Gitlab::Seeder.quiet do Gitlab::Seeder.quiet do
project_urls = [ Gitlab::Seeder.without_gitaly_timeout do
'https://gitlab.com/gitlab-org/gitlab-test.git', project_urls = %w[
'https://gitlab.com/gitlab-org/gitlab-shell.git', https://gitlab.com/gitlab-org/gitlab-test.git
'https://gitlab.com/gnuwget/wget2.git', https://gitlab.com/gitlab-org/gitlab-shell.git
'https://gitlab.com/Commit451/LabCoat.git', https://gitlab.com/gnuwget/wget2.git
'https://github.com/jashkenas/underscore.git', https://gitlab.com/Commit451/LabCoat.git
'https://github.com/flightjs/flight.git', https://github.com/jashkenas/underscore.git
'https://github.com/twitter/typeahead.js.git', https://github.com/flightjs/flight.git
'https://github.com/h5bp/html5-boilerplate.git', https://github.com/twitter/typeahead.js.git
'https://github.com/google/material-design-lite.git', https://github.com/h5bp/html5-boilerplate.git
'https://github.com/jlevy/the-art-of-command-line.git', https://github.com/google/material-design-lite.git
'https://github.com/FreeCodeCamp/freecodecamp.git', https://github.com/jlevy/the-art-of-command-line.git
'https://github.com/google/deepdream.git', https://github.com/FreeCodeCamp/freecodecamp.git
'https://github.com/jtleek/datasharing.git', https://github.com/google/deepdream.git
'https://github.com/WebAssembly/design.git', https://github.com/jtleek/datasharing.git
'https://github.com/airbnb/javascript.git', https://github.com/WebAssembly/design.git
'https://github.com/tessalt/echo-chamber-js.git', https://github.com/airbnb/javascript.git
'https://github.com/atom/atom.git', https://github.com/tessalt/echo-chamber-js.git
'https://github.com/mattermost/mattermost-server.git', https://github.com/atom/atom.git
'https://github.com/purifycss/purifycss.git', https://github.com/mattermost/mattermost-server.git
'https://github.com/facebook/nuclide.git', https://github.com/purifycss/purifycss.git
'https://github.com/wbkd/awesome-d3.git', https://github.com/facebook/nuclide.git
'https://github.com/kilimchoi/engineering-blogs.git', https://github.com/wbkd/awesome-d3.git
'https://github.com/gilbarbara/logos.git', https://github.com/kilimchoi/engineering-blogs.git
'https://github.com/reduxjs/redux.git', https://github.com/gilbarbara/logos.git
'https://github.com/awslabs/s2n.git', https://github.com/reduxjs/redux.git
'https://github.com/arkency/reactjs_koans.git', https://github.com/awslabs/s2n.git
'https://github.com/twbs/bootstrap.git', https://github.com/arkency/reactjs_koans.git
'https://github.com/chjj/ttystudio.git', https://github.com/twbs/bootstrap.git
'https://github.com/MostlyAdequate/mostly-adequate-guide.git', https://github.com/chjj/ttystudio.git
'https://github.com/octocat/Spoon-Knife.git', https://github.com/MostlyAdequate/mostly-adequate-guide.git
'https://github.com/opencontainers/runc.git', https://github.com/octocat/Spoon-Knife.git
'https://github.com/googlesamples/android-topeka.git' https://github.com/opencontainers/runc.git
https://github.com/googlesamples/android-topeka.git
] ]
# You can specify how many projects you need during seed execution large_project_urls = %w[
size = ENV['SIZE'].present? ? ENV['SIZE'].to_i : 8 https://github.com/torvalds/linux.git
https://gitlab.gnome.org/GNOME/gimp.git
https://gitlab.gnome.org/GNOME/gnome-mud.git
https://gitlab.com/fdroid/fdroidclient.git
https://gitlab.com/inkscape/inkscape.git
https://github.com/gnachman/iTerm2.git
]
project_urls.first(size).each_with_index do |url, i| def create_project(url, force_latest_storage: false)
group_path, project_path = url.split('/')[-2..-1] group_path, project_path = url.split('/')[-2..-1]
group = Group.find_by(path: group_path) group = Group.find_by(path: group_path)
...@@ -67,7 +76,7 @@ Sidekiq::Testing.inline! do ...@@ -67,7 +76,7 @@ Sidekiq::Testing.inline! do
skip_disk_validation: true skip_disk_validation: true
} }
if i % 2 == 0 if force_latest_storage
params[:storage_version] = Project::LATEST_STORAGE_VERSION params[:storage_version] = Project::LATEST_STORAGE_VERSION
end end
...@@ -91,5 +100,38 @@ Sidekiq::Testing.inline! do ...@@ -91,5 +100,38 @@ Sidekiq::Testing.inline! do
print 'F' print 'F'
end end
end end
# You can specify how many projects you need during seed execution
size = ENV['SIZE'].present? ? ENV['SIZE'].to_i : 8
project_urls.first(size).each_with_index do |url, i|
create_project(url, force_latest_storage: i.even?)
end
if ENV['LARGE_PROJECTS'].present?
large_project_urls.each(&method(:create_project))
if ENV['FORK'].present?
puts "\nGenerating forks"
project_name = ENV['FORK'] == 'true' ? 'torvalds/linux' : ENV['FORK']
project = Project.find_by_full_path(project_name)
User.offset(1).first(5).each do |user|
new_project = Projects::ForkService.new(project, user).execute
if new_project.valid? && (new_project.valid_repo? || new_project.import_state.scheduled?)
print '.'
else
new_project.errors.full_messages.each do |error|
puts "#{new_project.full_path}: #{error}"
end
print 'F'
end
end
end
end
end
end end
end end
...@@ -38,6 +38,14 @@ Note that since you can't see the questions from stdout, you might just want ...@@ -38,6 +38,14 @@ Note that since you can't see the questions from stdout, you might just want
to `echo 'yes'` to keep it running. It would still print the errors on stderr to `echo 'yes'` to keep it running. It would still print the errors on stderr
so no worries about missing errors. so no worries about missing errors.
### Extra Project seed options
There are a few environment flags you can pass to change how projects are seeded
- `SIZE`: defaults to `8`, max: `32`. Amount of projects to create.
- `LARGE_PROJECTS`: defaults to false. If set will clone 6 large projects to help with testing.
- `FORK`: defaults to false. If set to `true` will fork `torvalds/linux` five times. Can also be set to an existing project full_path and it will fork that instead.
### Notes for MySQL ### Notes for MySQL
Since the seeds would contain various UTF-8 characters, such as emojis or so, Since the seeds would contain various UTF-8 characters, such as emojis or so,
......
...@@ -26,6 +26,19 @@ module Gitlab ...@@ -26,6 +26,19 @@ module Gitlab
puts "\nOK".color(:green) puts "\nOK".color(:green)
end end
def self.without_gitaly_timeout
# Remove Gitaly timeout
old_timeout = Gitlab::CurrentSettings.current_application_settings.gitaly_timeout_default
Gitlab::CurrentSettings.current_application_settings.update_columns(gitaly_timeout_default: 0)
# Otherwise we still see the default value when running seed_fu
ApplicationSetting.expire
yield
ensure
Gitlab::CurrentSettings.current_application_settings.update_columns(gitaly_timeout_default: old_timeout)
ApplicationSetting.expire
end
def self.mute_notifications def self.mute_notifications
NotificationService.prepend(MuteNotifications) NotificationService.prepend(MuteNotifications)
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment