diff options
Diffstat (limited to 'tooling/danger/multiversion.rb')
-rw-r--r-- | tooling/danger/multiversion.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tooling/danger/multiversion.rb b/tooling/danger/multiversion.rb new file mode 100644 index 00000000000..612881aaa1a --- /dev/null +++ b/tooling/danger/multiversion.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module Tooling + module Danger + module Multiversion + FRONTEND_REGEX = %r{\A((ee|jh)/)?app/assets/.*(\.(vue|js|graphql))\z} + GRAPHQL_BACKEND_REGEX = %r{\A((ee|jh)/)?app/graphql/} + + def check! + return unless helper.ci? + return unless frontend_changed? && backend_changed? + + markdown <<~MARKDOWN + ## Multiversion compatibility + + This merge request updates GraphQL backend and frontend code. + + To prevent an incident, ensure the updated frontend code is backwards compatible. + + For more information, see the [multiversion compatibility documentation](https://docs.gitlab.com/ee/development/graphql_guide/reviewing.html#multiversion-compatibility). + MARKDOWN + end + + private + + def frontend_changed? + !git.modified_files.grep(FRONTEND_REGEX).empty? || !git.added_files.grep(FRONTEND_REGEX).empty? + end + + def backend_changed? + !git.added_files.grep(GRAPHQL_BACKEND_REGEX).empty? || !git.modified_files.grep(GRAPHQL_BACKEND_REGEX).empty? + end + end + end +end |