Fix pipeline and build seeds in development environment
When we depend on state machine events in seeds, it is likely that we will break fixtures from time to time because when transition rules change, using events most likely invalidates some objects in seeds.
This commit is contained in:
parent
11c6077441
commit
1b0aa72d71
|
@ -1,5 +1,21 @@
|
|||
class Gitlab::Seeder::Builds
|
||||
STAGES = %w[build notify_build test notify_test deploy notify_deploy]
|
||||
BUILDS = [
|
||||
{ name: 'build:linux', stage: 'build', status: :success },
|
||||
{ name: 'build:osx', stage: 'build', status: :success },
|
||||
{ name: 'slack post build', stage: 'notify_build', status: :success },
|
||||
{ name: 'rspec:linux', stage: 'test', status: :success },
|
||||
{ name: 'rspec:windows', stage: 'test', status: :success },
|
||||
{ name: 'rspec:windows', stage: 'test', status: :success },
|
||||
{ name: 'rspec:osx', stage: 'test', status_event: :success },
|
||||
{ name: 'spinach:linux', stage: 'test', status: :pending },
|
||||
{ name: 'spinach:osx', stage: 'test', status: :canceled },
|
||||
{ name: 'cucumber:linux', stage: 'test', status: :running },
|
||||
{ name: 'cucumber:osx', stage: 'test', status: :failed },
|
||||
{ name: 'slack post test', stage: 'notify_test', status: :success },
|
||||
{ name: 'staging', stage: 'deploy', environment: 'staging', status: :success },
|
||||
{ name: 'production', stage: 'deploy', environment: 'production', when: 'manual', status: :success },
|
||||
]
|
||||
|
||||
def initialize(project)
|
||||
@project = project
|
||||
|
@ -8,25 +24,7 @@ class Gitlab::Seeder::Builds
|
|||
def seed!
|
||||
pipelines.each do |pipeline|
|
||||
begin
|
||||
build_create!(pipeline, name: 'build:linux', stage: 'build', status_event: :success)
|
||||
build_create!(pipeline, name: 'build:osx', stage: 'build', status_event: :success)
|
||||
|
||||
build_create!(pipeline, name: 'slack post build', stage: 'notify_build', status_event: :success)
|
||||
|
||||
build_create!(pipeline, name: 'rspec:linux', stage: 'test', status_event: :success)
|
||||
build_create!(pipeline, name: 'rspec:windows', stage: 'test', status_event: :success)
|
||||
build_create!(pipeline, name: 'rspec:windows', stage: 'test', status_event: :success)
|
||||
build_create!(pipeline, name: 'rspec:osx', stage: 'test', status_event: :success)
|
||||
build_create!(pipeline, name: 'spinach:linux', stage: 'test', status: :pending)
|
||||
build_create!(pipeline, name: 'spinach:osx', stage: 'test', status_event: :cancel)
|
||||
build_create!(pipeline, name: 'cucumber:linux', stage: 'test', status_event: :run)
|
||||
build_create!(pipeline, name: 'cucumber:osx', stage: 'test', status_event: :drop)
|
||||
|
||||
build_create!(pipeline, name: 'slack post test', stage: 'notify_test', status_event: :success)
|
||||
|
||||
build_create!(pipeline, name: 'staging', stage: 'deploy', environment: 'staging', status_event: :success)
|
||||
build_create!(pipeline, name: 'production', stage: 'deploy', environment: 'production', when: 'manual', status: :success)
|
||||
|
||||
BUILDS.each { |opts| build_create!(pipeline, opts) }
|
||||
commit_status_create!(pipeline, name: 'jenkins', status: :success)
|
||||
|
||||
print '.'
|
||||
|
@ -48,22 +46,23 @@ class Gitlab::Seeder::Builds
|
|||
|
||||
def build_create!(pipeline, opts = {})
|
||||
attributes = build_attributes_for(pipeline, opts)
|
||||
build = Ci::Build.create!(attributes)
|
||||
|
||||
if opts[:name].start_with?('build')
|
||||
artifacts_cache_file(artifacts_archive_path) do |file|
|
||||
build.artifacts_file = file
|
||||
Ci::Build.create!(attributes) do |build|
|
||||
if opts[:name].start_with?('build')
|
||||
artifacts_cache_file(artifacts_archive_path) do |file|
|
||||
build.artifacts_file = file
|
||||
end
|
||||
|
||||
artifacts_cache_file(artifacts_metadata_path) do |file|
|
||||
build.artifacts_metadata = file
|
||||
end
|
||||
end
|
||||
|
||||
artifacts_cache_file(artifacts_metadata_path) do |file|
|
||||
build.artifacts_metadata = file
|
||||
if %w(running success failed).include?(build.status)
|
||||
# We need to set build trace after saving a build (id required)
|
||||
build.trace = FFaker::Lorem.paragraphs(6).join("\n\n")
|
||||
end
|
||||
end
|
||||
|
||||
if %w(running success failed).include?(build.status)
|
||||
# We need to set build trace after saving a build (id required)
|
||||
build.trace = FFaker::Lorem.paragraphs(6).join("\n\n")
|
||||
end
|
||||
end
|
||||
|
||||
def commit_status_create!(pipeline, opts = {})
|
||||
|
|
Loading…
Reference in New Issue