summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSean Carroll <scarroll@gitlab.com>2019-09-10 21:04:00 +0200
committerSean Carroll <scarroll@gitlab.com>2019-09-10 21:04:05 +0200
commit5741b05e2d0888ba70c2772adad597aabf553cd2 (patch)
tree64833d6e444f9bdd6592205af5587383bff4cc9b
parent9a2ae7e290023b4f1d05d8692142e0628e9e8c31 (diff)
downloadgitlab-ce-60060-backfill-release-name-with-tag-name.tar.gz
Default for private projects60060-backfill-release-name-with-tag-name
-rw-r--r--db/post_migrate/20190829131947_backfill_release_name_with_tag.rb7
-rw-r--r--spec/migrations/backfill_release_name_with_tag_spec.rb32
2 files changed, 30 insertions, 9 deletions
diff --git a/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb b/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb
index 0f4996cc695..a2a4f80b38f 100644
--- a/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb
+++ b/db/post_migrate/20190829131947_backfill_release_name_with_tag.rb
@@ -8,11 +8,16 @@ class BackfillReleaseNameWithTag < ActiveRecord::Migration[5.2]
disable_ddl_transaction!
def up
- subquery = Arel.sql("select id from projects where visibility_level = #{Gitlab::VisibilityLevel::PUBLIC}")
+ table = Project.arel_table
+ subquery = table.project(table[:id]).where(table[:visibility_level].eq(Gitlab::VisibilityLevel::PUBLIC))
update_column_in_batches(:releases, :name, Release.arel_table[:tag]) do |table, query|
query.where(table[:name].eq(nil)).where(table[:project_id].in(subquery))
end
+
+ update_column_in_batches(:releases, :name, Arel.sql("'release-' || id")) do |table, query|
+ query.where(table[:name].eq(nil)).where(table[:project_id].not_in(subquery))
+ end
end
def down
diff --git a/spec/migrations/backfill_release_name_with_tag_spec.rb b/spec/migrations/backfill_release_name_with_tag_spec.rb
index 3c61ac11270..996f326836f 100644
--- a/spec/migrations/backfill_release_name_with_tag_spec.rb
+++ b/spec/migrations/backfill_release_name_with_tag_spec.rb
@@ -7,17 +7,33 @@ describe BackfillReleaseNameWithTag, :migration do
let(:releases) { table(:releases) }
let(:namespaces) { table(:namespaces) }
let(:projects) { table(:projects) }
-
let(:namespace) { namespaces.create(name: 'foo', path: 'foo') }
- let(:project) { projects.create!(namespace_id: namespace.id, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
- let!(:release) { releases.create!(project_id: project.id, name: nil, tag: 'v1.0.0', released_at: 2.days.ago) }
- it 'defaults name to tag value' do
- expect(release.tag).to be_present
+ context 'public project' do
+ let(:project) { projects.create!(namespace_id: namespace.id, visibility_level: Gitlab::VisibilityLevel::PUBLIC) }
+ let!(:release) { releases.create!(project_id: project.id, name: nil, tag: 'v1.0.0', released_at: 2.days.ago) }
+
+ it 'defaults name to tag value' do
+ expect(release.tag).to be_present
+
+ migrate!
+ release.reload
+
+ expect(release.name).to eq(release.tag)
+ end
+ end
+
+ context 'private project' do
+ let(:project) { projects.create!(namespace_id: namespace.id, visibility_level: Gitlab::VisibilityLevel::PRIVATE) }
+ let!(:release) { releases.create!(project_id: project.id, name: nil, tag: 'v1.0.0', released_at: 2.days.ago) }
+
+ it 'defaults name to tag value' do
+ expect(release.tag).to be_present
- migrate!
+ migrate!
+ release.reload
- release.reload
- expect(release.name).to eq(release.tag)
+ expect(release.name).to eq("release-#{release.id}")
+ end
end
end