NO_BUILD_CHANGE_HAPPENED_LABELS = [ 'maintenance::pipelines', 'maintenance::workflow' ].freeze SOFTWARE_MESSAGE = <<~MSG.freeze You've made some changes to the software definitions. Any change in software definition requires: - package rebuild to verify that builds across the supported platforms are successful. - manual verification to confirm the package is installable - [uses an approved license](https://about.gitlab.com/handbook/engineering/open-source/#acceptable-licenses) If the change does not affect existing functionality, for example when resolving `rubocop` warnings, adding comments, or fixing typos, add one of the following labels: - %s MSG LIBRARY_FILES = [ 'config/patches/', 'config/projects/', 'config/software/', 'config/templates/' ].freeze def no_build_change_happened_labels NO_BUILD_CHANGE_HAPPENED_LABELS.map { |label| %(~"#{label}") }.join("\n- ") end def library_paths_requiring_review(files) to_review = [] files.each do |file| review = LIBRARY_FILES.any? do |pattern| file.start_with?(pattern) end to_review << file if review end to_review end has_config_changes = !library_paths_requiring_review(helper.all_changed_files).empty? requires_build_review = (helper.mr_labels & NO_BUILD_CHANGE_HAPPENED_LABELS).empty? warn format(SOFTWARE_MESSAGE, labels: no_build_change_happened_labels) if has_config_changes && requires_build_review