Add initial build stage_id ref background migration
This commit is contained in:
parent
b21ee2ee36
commit
98992c4e4b
|
@ -3,7 +3,17 @@ class MigrateStageIdReferenceInBackground < ActiveRecord::Migration
|
||||||
|
|
||||||
DOWNTIME = false
|
DOWNTIME = false
|
||||||
|
|
||||||
|
disable_ddl_transaction!
|
||||||
|
|
||||||
|
class Build < ActiveRecord::Base
|
||||||
|
self.table_name = 'ci_builds'
|
||||||
|
end
|
||||||
|
|
||||||
def up
|
def up
|
||||||
|
Build.find_each do |build|
|
||||||
|
BackgroundMigrationWorker
|
||||||
|
.perform_async('MigrateBuildStageIdReference', [build.id])
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def down
|
def down
|
||||||
|
|
|
@ -1,15 +1,19 @@
|
||||||
module Gitlab
|
module Gitlab
|
||||||
module BackgroundMigration
|
module BackgroundMigration
|
||||||
class MigrateBuildStageIdReference
|
class MigrateBuildStageIdReference
|
||||||
class Build < ActiveRecord::Base
|
|
||||||
self.table_name = 'ci_builds'
|
|
||||||
end
|
|
||||||
|
|
||||||
class Stage < ActiveRecord::Base
|
|
||||||
self.table_name = 'ci_stages'
|
|
||||||
end
|
|
||||||
|
|
||||||
def perform(id)
|
def perform(id)
|
||||||
|
raise ArgumentError unless id.is_a?(Integer)
|
||||||
|
|
||||||
|
sql = <<-SQL.strip_heredoc
|
||||||
|
UPDATE "ci_builds" SET "stage_id" = (
|
||||||
|
SELECT id FROM ci_stages
|
||||||
|
WHERE ci_stages.pipeline_id = ci_builds.commit_id
|
||||||
|
AND ci_stages.name = ci_builds.stage
|
||||||
|
)
|
||||||
|
WHERE "ci_builds"."id" = #{id} AND "ci_builds"."stage_id" IS NULL
|
||||||
|
SQL
|
||||||
|
|
||||||
|
ActiveRecord::Base.connection.execute(sql)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -22,5 +22,10 @@ describe MigrateStageIdReferenceInBackground, :migration, :redis do
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'schedules background migrations' do
|
it 'schedules background migrations' do
|
||||||
|
expect(jobs.where(stage_id: nil)).to be_present
|
||||||
|
|
||||||
|
migrate!
|
||||||
|
|
||||||
|
expect(jobs.where(stage_id: nil)).to be_empty
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue