debian-mirror-gitlab/danger/database/Dangerfile

74 lines
2.8 KiB
Ruby
Raw Normal View History

2018-11-18 11:00:15 +05:30
# frozen_string_literal: true
2021-02-22 17:27:13 +05:30
SCHEMA_NOT_UPDATED_MESSAGE_SHORT = "New %<migrations>s added but %<schema>s wasn't updated"
2019-12-04 20:38:33 +05:30
SCHEMA_NOT_UPDATED_MESSAGE_FULL = <<~MSG
**#{SCHEMA_NOT_UPDATED_MESSAGE_SHORT}**
2018-11-18 11:00:15 +05:30
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-10-12 21:52:04 +05:30
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.
2020-03-13 15:44:24 +05:30
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-10-12 21:52:04 +05:30
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-09-30 23:02:18 +05:30
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-04-08 14:13:33 +05:30
DATABASE_APPROVED_LABEL = 'database::approved'
2020-04-22 19:07:51 +05:30
non_geo_db_schema_updated = !git.modified_files.grep(%r{\Adb/structure\.sql}).empty?
2021-11-18 22:05:49 +05:30
geo_db_schema_updated = !git.modified_files.grep(%r{\Aee/db/geo/structure\.sql}).empty?
2018-11-18 11:00:15 +05:30
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-04-17 20:07:23 +05:30
format_str = helper.ci? ? SCHEMA_NOT_UPDATED_MESSAGE_FULL : SCHEMA_NOT_UPDATED_MESSAGE_SHORT
2019-12-04 20:38:33 +05:30
2018-11-18 11:00:15 +05:30
if non_geo_migration_created && !non_geo_db_schema_updated
2021-04-17 20:07:23 +05:30
warn format(format_str, migrations: 'migrations', schema: helper.html_link("db/structure.sql"))
2018-11-18 11:00:15 +05:30
end
if geo_migration_created && !geo_db_schema_updated
2021-11-18 22:05:49 +05:30
warn format(format_str, migrations: 'Geo migrations', schema: helper.html_link("ee/db/geo/structure.sql"))
2018-11-18 11:00:15 +05:30
end
2021-04-17 20:07:23 +05:30
return unless helper.ci?
2020-04-08 14:13:33 +05:30
return if gitlab.mr_labels.include?(DATABASE_APPROVED_LABEL)
2019-12-04 20:38:33 +05:30
2021-04-17 20:07:23 +05:30
db_paths_to_review = project_helper.changes_by_category[:database]
2018-11-18 11:00:15 +05:30
2019-10-12 21:52:04 +05:30
if gitlab.mr_labels.include?('database') || db_paths_to_review.any?
2018-11-18 11:00:15 +05:30
message 'This merge request adds or changes files that require a ' \
2019-10-12 21:52:04 +05:30
'review from the [Database team](https://gitlab.com/groups/gl-database/-/group_members).'
2018-11-18 11:00:15 +05:30
2019-10-12 21:52:04 +05:30
markdown(DB_MESSAGE)
2021-09-30 23:02:18 +05:30
if db_paths_to_review.any?
markdown(DB_FILES_MESSAGE + helper.markdown_list(db_paths_to_review))
else
markdown(DB_REMOVE_MESSAGE)
end
2018-11-18 11:00:15 +05:30
2021-06-08 01:23:25 +05:30
unless helper.has_database_scoped_labels?
2019-10-12 21:52:04 +05:30
gitlab.api.update_merge_request(gitlab.mr_json['project_id'],
2020-11-24 15:15:51 +05:30
gitlab.mr_json['iid'],
add_labels: 'database::review pending')
2018-11-18 11:00:15 +05:30
end
end