BigW Consortium Gitlab

20151210125930_migrate_ci_to_project.rb 1.74 KB
Newer Older
1
# rubocop:disable all
2 3 4 5 6 7 8
class MigrateCiToProject < ActiveRecord::Migration
  def up
    migrate_project_id_for_table('ci_runner_projects')
    migrate_project_id_for_table('ci_triggers')
    migrate_project_id_for_table('ci_variables')
    migrate_project_id_for_builds

Kamil Trzcinski committed
9 10 11
    migrate_project_column('id', 'ci_id')
    migrate_project_column('shared_runners_enabled', 'shared_runners_enabled')
    migrate_project_column('token', 'runners_token')
12 13 14 15 16 17
    migrate_project_column('coverage_regex', 'build_coverage_regex')
    migrate_project_column('allow_git_fetch', 'build_allow_git_fetch')
    migrate_project_column('timeout', 'build_timeout')
    migrate_ci_service
  end

18 19 20 21
  def down
    # We can't reverse the data
  end

22 23 24 25 26 27 28 29 30 31 32 33
  def migrate_project_id_for_table(table)
    subquery = "SELECT gitlab_id FROM ci_projects WHERE ci_projects.id = #{table}.project_id"
    execute("UPDATE #{table} SET gl_project_id=(#{subquery}) WHERE gl_project_id IS NULL")
  end

  def migrate_project_id_for_builds
    subquery = 'SELECT gl_project_id FROM ci_commits WHERE ci_commits.id = ci_builds.commit_id'
    execute("UPDATE ci_builds SET gl_project_id=(#{subquery}) WHERE gl_project_id IS NULL")
  end

  def migrate_project_column(column, new_column = nil)
    new_column ||= column
34 35
    subquery = "SELECT ci_projects.#{column} FROM ci_projects WHERE projects.id = ci_projects.gitlab_id " \
      'ORDER BY ci_projects.updated_at DESC LIMIT 1'
36
    execute("UPDATE projects SET #{new_column}=(#{subquery}) WHERE (#{subquery}) IS NOT NULL")
37 38 39
  end

  def migrate_ci_service
40 41
    subquery = "SELECT active FROM services WHERE projects.id = services.project_id AND type='GitlabCiService' LIMIT 1"
    execute("UPDATE projects SET builds_enabled=(#{subquery}) WHERE (#{subquery}) IS NOT NULL")
42 43
  end
end