diff options
Diffstat (limited to 'db/post_migrate/20190917173107_backfill_software_licenses_spdx_identifiers.rb')
-rw-r--r-- | db/post_migrate/20190917173107_backfill_software_licenses_spdx_identifiers.rb | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/db/post_migrate/20190917173107_backfill_software_licenses_spdx_identifiers.rb b/db/post_migrate/20190917173107_backfill_software_licenses_spdx_identifiers.rb new file mode 100644 index 00000000000..09492f5f99e --- /dev/null +++ b/db/post_migrate/20190917173107_backfill_software_licenses_spdx_identifiers.rb @@ -0,0 +1,57 @@ +# frozen_string_literal: true + +class BackfillSoftwareLicensesSpdxIdentifiers < ActiveRecord::Migration[5.2] + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + CURRENT_LICENSES = { + 'AGPL-1.0' => 'AGPL-1.0', + 'AGPL-3.0' => 'AGPL-3.0', + 'Apache 2.0' => 'Apache-2.0', + 'Artistic-2.0' => 'Artistic-2.0', + 'BSD' => 'BSD-4-Clause', + 'CC0 1.0 Universal' => 'CC0-1.0', + 'CDDL-1.0' => 'CDDL-1.0', + 'CDDL-1.1' => 'CDDL-1.1', + 'EPL-1.0' => 'EPL-1.0', + 'EPL-2.0' => 'EPL-2.0', + 'GPLv2' => 'GPL-2.0', + 'GPLv3' => 'GPL-3.0', + 'ISC' => 'ISC', + 'LGPL' => 'LGPL-3.0-only', + 'LGPL-2.1' => 'LGPL-2.1', + 'MIT' => 'MIT', + 'Mozilla Public License 2.0' => 'MPL-2.0', + 'MS-PL' => 'MS-PL', + 'MS-RL' => 'MS-RL', + 'New BSD' => 'BSD-3-Clause', + 'Python Software Foundation License' => 'Python-2.0', + 'ruby' => 'Ruby', + 'Simplified BSD' => 'BSD-2-Clause', + 'WTFPL' => 'WTFPL', + 'Zlib' => 'Zlib' + }.freeze + + disable_ddl_transaction! + + # 25 records to be updated on GitLab.com + def up + return unless Gitlab.ee? + + say "Expect #{CURRENT_LICENSES.count} updates to the software_licenses table to occur" + CURRENT_LICENSES.each do |name, spdx_identifier| + # The following cop is disabled because of https://gitlab.com/gitlab-org/gitlab/issues/33470 + # For more context see https://gitlab.com/gitlab-org/gitlab/merge_requests/17004#note_226264823 + # rubocop:disable Migration/UpdateColumnInBatches + update_column_in_batches(:software_licenses, :spdx_identifier, spdx_identifier) do |table, query| + query.where(table[:name].eq(name)) + end + end + end + + def down + return unless Gitlab.ee? + + update_column_in_batches(:software_licenses, :spdx_identifier, nil) + end +end |