43b0dddf38
Bit of a cryptic commit title, but our seeding will try to guard against branchnames being anything but alphanumerical. These charachters we gsub away but can't have an empty string as replacement. This change is less efficient, but given that the number of seeded MRs per project is very limited, this should be ok.
74 lines
1.8 KiB
Ruby
74 lines
1.8 KiB
Ruby
require './spec/support/sidekiq'
|
|
|
|
class Gitlab::Seeder::Environments
|
|
def initialize(project)
|
|
@project = project
|
|
end
|
|
|
|
def seed!
|
|
@project.create_mock_deployment_service!(active: true)
|
|
@project.create_mock_monitoring_service!(active: true)
|
|
|
|
create_master_deployments!('production')
|
|
create_master_deployments!('staging')
|
|
create_merge_request_review_deployments!
|
|
end
|
|
|
|
private
|
|
|
|
def create_master_deployments!(name)
|
|
@project.repository.commits('master', limit: 4).map do |commit|
|
|
create_deployment!(
|
|
@project,
|
|
name,
|
|
'master',
|
|
commit.id
|
|
)
|
|
end
|
|
end
|
|
|
|
def create_merge_request_review_deployments!
|
|
@project
|
|
.merge_requests
|
|
.select { |mr| mr.source_branch.match(/\p{Alnum}+/) }
|
|
.sample(4)
|
|
.each do |merge_request|
|
|
next unless merge_request.diff_head_sha
|
|
|
|
create_deployment!(
|
|
merge_request.source_project,
|
|
"review/#{merge_request.source_branch.gsub(/[^a-zA-Z0-9]/, '')}",
|
|
merge_request.source_branch,
|
|
merge_request.diff_head_sha
|
|
)
|
|
end
|
|
end
|
|
|
|
def create_deployment!(project, name, ref, sha)
|
|
environment = find_or_create_environment!(project, name)
|
|
environment.deployments.create!(
|
|
project: project,
|
|
ref: ref,
|
|
sha: sha,
|
|
tag: false,
|
|
deployable: find_deployable(project, name)
|
|
)
|
|
end
|
|
|
|
def find_or_create_environment!(project, name)
|
|
project.environments.find_or_create_by!(name: name).tap do |environment|
|
|
environment.update(external_url: "https://google.com/#{name}")
|
|
end
|
|
end
|
|
|
|
def find_deployable(project, environment)
|
|
project.builds.where(environment: environment).sample
|
|
end
|
|
end
|
|
|
|
Gitlab::Seeder.quiet do
|
|
Project.all.sample(5).each do |project|
|
|
project_environments = Gitlab::Seeder::Environments.new(project)
|
|
project_environments.seed!
|
|
end
|
|
end
|