2018-07-11 08:48:31 -04:00
|
|
|
# frozen_string_literal: true
|
2018-05-21 12:41:21 -04:00
|
|
|
|
2020-11-24 07:09:17 -05:00
|
|
|
SCHEMA_NOT_UPDATED_MESSAGE_SHORT = "New %<migrations>s added but %<schema>s wasn't updated"
|
2019-09-06 07:21:53 -04:00
|
|
|
|
|
|
|
SCHEMA_NOT_UPDATED_MESSAGE_FULL = <<~MSG
|
|
|
|
**#{SCHEMA_NOT_UPDATED_MESSAGE_SHORT}**
|
2018-07-10 06:10:54 -04:00
|
|
|
|
|
|
|
Usually, when adding new %<migrations>s, %<schema>s should be
|
|
|
|
updated too (unless the migration isn't changing the DB schema
|
|
|
|
and isn't the most recent one).
|
|
|
|
MSG
|
|
|
|
|
2019-07-19 13:33:48 -04:00
|
|
|
DB_MESSAGE = <<~MSG
|
|
|
|
This merge request requires a database review. To make sure these
|
|
|
|
changes are reviewed, take the following steps:
|
|
|
|
|
|
|
|
1. Ensure the merge request has ~database and ~"database::review pending" labels.
|
|
|
|
If the merge request modifies database files, Danger will do this for you.
|
2019-12-26 16:07:49 -05:00
|
|
|
1. Prepare your MR for database review according to the
|
|
|
|
[docs](https://docs.gitlab.com/ee/development/database_review.html#how-to-prepare-the-merge-request-for-a-database-review).
|
2019-07-19 13:33:48 -04:00
|
|
|
1. Assign and mention the database reviewer suggested by Reviewer Roulette.
|
|
|
|
MSG
|
|
|
|
|
|
|
|
DB_FILES_MESSAGE = <<~MSG
|
|
|
|
The following files require a review from the Database team:
|
|
|
|
MSG
|
|
|
|
|
2021-07-13 02:10:10 -04:00
|
|
|
DB_REMOVE_MESSAGE = <<~MSG
|
|
|
|
If you no longer require a database review, you can remove this suggestion
|
|
|
|
by removing the ~database label and re-running the [`danger-review` job](#{ENV['CI_JOB_URL']}).
|
|
|
|
MSG
|
|
|
|
|
2020-03-09 11:07:45 -04:00
|
|
|
DATABASE_APPROVED_LABEL = 'database::approved'
|
|
|
|
|
2020-03-22 11:09:49 -04:00
|
|
|
non_geo_db_schema_updated = !git.modified_files.grep(%r{\Adb/structure\.sql}).empty?
|
2021-09-28 23:12:00 -04:00
|
|
|
geo_db_schema_updated = !git.modified_files.grep(%r{\Aee/db/geo/structure\.sql}).empty?
|
2018-07-10 06:10:54 -04:00
|
|
|
|
|
|
|
non_geo_migration_created = !git.added_files.grep(%r{\A(db/(post_)?migrate)/}).empty?
|
|
|
|
geo_migration_created = !git.added_files.grep(%r{\Aee/db/geo/(post_)?migrate/}).empty?
|
|
|
|
|
2021-03-12 07:09:33 -05:00
|
|
|
format_str = helper.ci? ? SCHEMA_NOT_UPDATED_MESSAGE_FULL : SCHEMA_NOT_UPDATED_MESSAGE_SHORT
|
2019-09-06 07:21:53 -04:00
|
|
|
|
2018-07-10 06:10:54 -04:00
|
|
|
if non_geo_migration_created && !non_geo_db_schema_updated
|
2021-03-12 07:09:33 -05:00
|
|
|
warn format(format_str, migrations: 'migrations', schema: helper.html_link("db/structure.sql"))
|
2018-07-10 06:10:54 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
if geo_migration_created && !geo_db_schema_updated
|
2021-09-28 23:12:00 -04:00
|
|
|
warn format(format_str, migrations: 'Geo migrations', schema: helper.html_link("ee/db/geo/structure.sql"))
|
2018-05-21 12:41:21 -04:00
|
|
|
end
|
2018-07-11 08:48:31 -04:00
|
|
|
|
2021-03-12 07:09:33 -05:00
|
|
|
return unless helper.ci?
|
2020-03-09 11:07:45 -04:00
|
|
|
return if gitlab.mr_labels.include?(DATABASE_APPROVED_LABEL)
|
2019-09-06 07:21:53 -04:00
|
|
|
|
2021-03-12 07:09:33 -05:00
|
|
|
db_paths_to_review = project_helper.changes_by_category[:database]
|
2018-07-11 08:48:31 -04:00
|
|
|
|
2019-07-19 13:33:48 -04:00
|
|
|
if gitlab.mr_labels.include?('database') || db_paths_to_review.any?
|
2018-07-11 08:48:31 -04:00
|
|
|
message 'This merge request adds or changes files that require a ' \
|
2019-07-19 13:33:48 -04:00
|
|
|
'review from the [Database team](https://gitlab.com/groups/gl-database/-/group_members).'
|
2018-07-11 08:48:31 -04:00
|
|
|
|
2019-07-19 13:33:48 -04:00
|
|
|
markdown(DB_MESSAGE)
|
2021-07-13 02:10:10 -04:00
|
|
|
|
|
|
|
if db_paths_to_review.any?
|
|
|
|
markdown(DB_FILES_MESSAGE + helper.markdown_list(db_paths_to_review))
|
|
|
|
else
|
|
|
|
markdown(DB_REMOVE_MESSAGE)
|
|
|
|
end
|
2018-07-11 08:48:31 -04:00
|
|
|
|
2021-05-05 08:10:33 -04:00
|
|
|
unless helper.has_database_scoped_labels?
|
2021-10-27 14:13:16 -04:00
|
|
|
project_helper.labels_to_add << 'database::review pending'
|
2018-07-11 08:48:31 -04:00
|
|
|
end
|
|
|
|
end
|