71 lines
1.7 KiB
Ruby
71 lines
1.7 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.sample(4).map do |merge_request|
|
||
|
next unless merge_request.diff_head_sha
|
||
|
|
||
|
create_deployment!(
|
||
|
merge_request.source_project,
|
||
|
"review/#{merge_request.source_branch}",
|
||
|
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
|