36 lines
1.1 KiB
Ruby
36 lines
1.1 KiB
Ruby
|
# 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
|