Skip to content

Add Integrations reviews to Roulette

Luke Duncalfe requested to merge 343486-integrations-roulette-reviews into master

What does this MR do and why?

This MR surfaces reviewer recommendations for ~"group::integrations" through Roulette #343486 (closed).

The integrations codebase is reasonably unique in that other groups can consider themselves owners of certain integrations. Recommending special reviews for changes that touch the integrations codebase will help improve the quality and reliability of integrations code contributed.

Screenshots or screen recordings

An example of frontend ~"group::integrations" code touched !74339 (closed) An example of backend ~"group::integrations" code touched !74341 (closed)
image image

How to set up and validate locally

The list of all files that the regexes match can be output (note: this excludes any regexes that match on file content):

# Start a new ruby console session:
# bundle exec rails c
# Paste the following:

require Rails.root.join('tooling/danger/project_helper.rb')

ALL_FILES = Dir.glob('**/*');

def category_regexs(category)
  matching_categories = Tooling::Danger::ProjectHelper::CATEGORIES.select do |regexs, categories| 
    next if regexs.is_a?(Array)

    Array.wrap(categories).include?(category)
  end

  regexes = matching_categories.map(&:first)
  Regexp.union(*regexes)
end

def print_files(category)
  regex = category_regexs(category)

  puts ALL_FILES.grep(regex).reject { |path| File.directory?(path) }.sort
end

puts "Backend:\n" 
print_files(:integrations_be)

puts "Frontend:\n" 
print_files(:integrations_fe)

At time of writing the files matched are:

Click to expand matched frontend paths
app/assets/javascripts/integrations/constants.js
app/assets/javascripts/integrations/edit/components/active_checkbox.vue
app/assets/javascripts/integrations/edit/components/confirmation_modal.vue
app/assets/javascripts/integrations/edit/components/dynamic_field.vue
app/assets/javascripts/integrations/edit/components/integration_form.vue
app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
app/assets/javascripts/integrations/edit/components/jira_upgrade_cta.vue
app/assets/javascripts/integrations/edit/components/override_dropdown.vue
app/assets/javascripts/integrations/edit/components/reset_confirmation_modal.vue
app/assets/javascripts/integrations/edit/components/trigger_fields.vue
app/assets/javascripts/integrations/edit/event_hub.js
app/assets/javascripts/integrations/edit/index.js
app/assets/javascripts/integrations/edit/store/actions.js
app/assets/javascripts/integrations/edit/store/getters.js
app/assets/javascripts/integrations/edit/store/index.js
app/assets/javascripts/integrations/edit/store/mutation_types.js
app/assets/javascripts/integrations/edit/store/mutations.js
app/assets/javascripts/integrations/edit/store/state.js
app/assets/javascripts/integrations/index/components/integrations_list.vue
app/assets/javascripts/integrations/index/components/integrations_table.vue
app/assets/javascripts/integrations/index/index.js
app/assets/javascripts/integrations/integration_settings_form.js
app/assets/javascripts/integrations/overrides/api.js
app/assets/javascripts/integrations/overrides/components/integration_overrides.vue
app/assets/javascripts/integrations/overrides/index.js
app/assets/javascripts/jira_connect/branches/components/new_branch_form.vue
app/assets/javascripts/jira_connect/branches/components/project_dropdown.vue
app/assets/javascripts/jira_connect/branches/components/source_branch_dropdown.vue
app/assets/javascripts/jira_connect/branches/constants.js
app/assets/javascripts/jira_connect/branches/graphql/mutations/create_branch.mutation.graphql
app/assets/javascripts/jira_connect/branches/graphql/queries/get_project.query.graphql
app/assets/javascripts/jira_connect/branches/graphql/queries/get_projects.query.graphql
app/assets/javascripts/jira_connect/branches/index.js
app/assets/javascripts/jira_connect/branches/pages/index.vue
app/assets/javascripts/jira_connect/subscriptions/api.js
app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_button.vue
app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/add_namespace_modal.vue
app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list.vue
app/assets/javascripts/jira_connect/subscriptions/components/add_namespace_modal/groups_list_item.vue
app/assets/javascripts/jira_connect/subscriptions/components/app.vue
app/assets/javascripts/jira_connect/subscriptions/components/group_item_name.vue
app/assets/javascripts/jira_connect/subscriptions/components/sign_in_button.vue
app/assets/javascripts/jira_connect/subscriptions/components/subscriptions_list.vue
app/assets/javascripts/jira_connect/subscriptions/constants.js
app/assets/javascripts/jira_connect/subscriptions/index.js
app/assets/javascripts/jira_connect/subscriptions/store/index.js
app/assets/javascripts/jira_connect/subscriptions/store/mutation_types.js
app/assets/javascripts/jira_connect/subscriptions/store/mutations.js
app/assets/javascripts/jira_connect/subscriptions/store/state.js
app/assets/javascripts/jira_connect/subscriptions/utils.js
app/assets/javascripts/pages/admin/application_settings/integrations/index.js
app/assets/javascripts/pages/admin/integrations/edit/index.js
app/assets/javascripts/pages/admin/integrations/overrides/index.js
app/assets/javascripts/pages/groups/settings/integrations/edit/index.js
app/assets/javascripts/pages/groups/settings/integrations/index.js
app/assets/javascripts/pages/jira_connect/branches/new/index.js
app/assets/javascripts/pages/projects/hooks/index.js
app/assets/javascripts/pages/projects/settings/integrations/show/index.js
app/assets/javascripts/profile/preferences/components/integration_view.vue
app/assets/javascripts/vue_shared/components/integrations_help_text.vue
app/assets/stylesheets/page_bundles/jira_connect.scss
app/assets/stylesheets/page_bundles/jira_connect_users.scss
app/views/admin/application_settings/integrations.html.haml
app/views/admin/hook_logs/_index.html.haml
app/views/admin/hook_logs/show.html.haml
app/views/admin/hooks/_form.html.haml
app/views/admin/hooks/edit.html.haml
app/views/admin/hooks/index.html.haml
app/views/groups/settings/integrations/index.html.haml
app/views/jira_connect/branches/new.html.haml
app/views/jira_connect/subscriptions/index.html.haml
app/views/jira_connect/users/show.html.haml
app/views/layouts/jira_connect.html.haml
app/views/projects/hook_logs/_index.html.haml
app/views/projects/hook_logs/show.html.haml
app/views/projects/hooks/edit.html.haml
app/views/projects/hooks/index.html.haml
app/views/projects/settings/integrations/show.html.haml
app/views/shared/hook_logs/_content.html.haml
app/views/shared/hook_logs/_recent_deliveries_table.html.haml
app/views/shared/hook_logs/_status_label.html.haml
app/views/shared/integrations/_form.html.haml
app/views/shared/integrations/_index.html.haml
app/views/shared/integrations/_tabs.html.haml
app/views/shared/integrations/edit.html.haml
app/views/shared/integrations/overrides.html.haml
ee/app/assets/javascripts/integrations/edit/components/jira_issue_creation_vulnerabilities.vue
ee/app/assets/javascripts/integrations/edit/constants.js
ee/app/assets/javascripts/integrations/jira/issues_list/graphql/fragments/jira_label.fragment.graphql
ee/app/assets/javascripts/integrations/jira/issues_list/graphql/fragments/jira_user.fragment.graphql
ee/app/assets/javascripts/integrations/jira/issues_list/graphql/queries/get_jira_issues.query.graphql
ee/app/assets/javascripts/integrations/jira/issues_list/graphql/resolvers/jira_issues.js
ee/app/assets/javascripts/integrations/jira/issues_list/jira_issues_list_bundle.js
ee/app/assets/javascripts/integrations/jira/issues_show/api.js
ee/app/assets/javascripts/integrations/jira/issues_show/components/jira_issues_show_root.vue
ee/app/assets/javascripts/integrations/jira/issues_show/components/sidebar/jira_issues_sidebar_root.vue
ee/app/assets/javascripts/integrations/jira/issues_show/jira_issues_show_bundle.js
ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/fragments/zentao_label.fragment.graphql
ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/fragments/zentao_user.fragment.graphql
ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/queries/get_zentao_issues.query.graphql
ee/app/assets/javascripts/integrations/zentao/issues_list/graphql/resolvers/zentao_issues.js
ee/app/assets/javascripts/integrations/zentao/issues_list/zentao_issues_list_bundle.js
ee/app/assets/javascripts/integrations/zentao/issues_show/api.js
ee/app/assets/javascripts/integrations/zentao/issues_show/components/sidebar/zentao_issues_sidebar_root.vue
ee/app/assets/javascripts/integrations/zentao/issues_show/components/zentao_issues_show_root.vue
ee/app/assets/javascripts/integrations/zentao/issues_show/zentao_issues_show_bundle.js
ee/app/assets/javascripts/pages/groups/hooks/index.js
ee/app/assets/javascripts/pages/projects/integrations/jira/issues/index/index.js
ee/app/assets/javascripts/pages/projects/integrations/jira/issues/show/index.js
ee/app/assets/javascripts/pages/projects/integrations/zentao/issues/index/index.js
ee/app/assets/javascripts/pages/projects/integrations/zentao/issues/show/index.js
ee/app/views/groups/hooks/_member_events.html.haml
ee/app/views/groups/hooks/_subgroup_events.html.haml
ee/app/views/groups/hooks/edit.html.haml
ee/app/views/groups/hooks/index.html.haml
ee/app/views/projects/integrations/jira/issues/index.html.haml
ee/app/views/projects/integrations/jira/issues/show.html.haml
ee/app/views/projects/integrations/zentao/issues/index.html.haml
ee/app/views/projects/integrations/zentao/issues/show.html.haml
Click to expand matched backend paths
app/controllers/admin/hook_logs_controller.rb
app/controllers/admin/hooks_controller.rb
app/controllers/admin/integrations_controller.rb
app/controllers/concerns/integrations/actions.rb
app/controllers/concerns/integrations/hooks_execution.rb
app/controllers/concerns/integrations/params.rb
app/controllers/groups/settings/integrations_controller.rb
app/controllers/jira_connect/app_descriptor_controller.rb
app/controllers/jira_connect/application_controller.rb
app/controllers/jira_connect/branches_controller.rb
app/controllers/jira_connect/events_controller.rb
app/controllers/jira_connect/installations_controller.rb
app/controllers/jira_connect/subscriptions_controller.rb
app/controllers/jira_connect/users_controller.rb
app/controllers/oauth/jira/authorizations_controller.rb
app/controllers/projects/hook_logs_controller.rb
app/controllers/projects/hooks_controller.rb
app/controllers/projects/service_hook_logs_controller.rb
app/controllers/projects/settings/integrations_controller.rb
app/helpers/hooks_helper.rb
app/helpers/integrations_helper.rb
app/helpers/jira_connect_helper.rb
app/models/concerns/integrations/base_data_fields.rb
app/models/concerns/integrations/has_data_fields.rb
app/models/concerns/integrations/has_web_hook.rb
app/models/concerns/integrations/reactively_cached.rb
app/models/concerns/integrations/slack_mattermost_notifier.rb
app/models/concerns/project_services_loggable.rb
app/models/concerns/triggerable_hooks.rb
app/models/hooks/active_hook_filter.rb
app/models/hooks/project_hook.rb
app/models/hooks/service_hook.rb
app/models/hooks/system_hook.rb
app/models/hooks/web_hook.rb
app/models/hooks/web_hook_log.rb
app/models/integration.rb
app/models/integrations/asana.rb
app/models/integrations/assembla.rb
app/models/integrations/bamboo.rb
app/models/integrations/base_chat_notification.rb
app/models/integrations/base_ci.rb
app/models/integrations/base_issue_tracker.rb
app/models/integrations/base_monitoring.rb
app/models/integrations/base_slash_commands.rb
app/models/integrations/bugzilla.rb
app/models/integrations/buildkite.rb
app/models/integrations/campfire.rb
app/models/integrations/chat_message/alert_message.rb
app/models/integrations/chat_message/base_message.rb
app/models/integrations/chat_message/deployment_message.rb
app/models/integrations/chat_message/issue_message.rb
app/models/integrations/chat_message/merge_message.rb
app/models/integrations/chat_message/note_message.rb
app/models/integrations/chat_message/pipeline_message.rb
app/models/integrations/chat_message/push_message.rb
app/models/integrations/chat_message/wiki_page_message.rb
app/models/integrations/confluence.rb
app/models/integrations/custom_issue_tracker.rb
app/models/integrations/datadog.rb
app/models/integrations/discord.rb
app/models/integrations/drone_ci.rb
app/models/integrations/emails_on_push.rb
app/models/integrations/ewm.rb
app/models/integrations/external_wiki.rb
app/models/integrations/flowdock.rb
app/models/integrations/hangouts_chat.rb
app/models/integrations/irker.rb
app/models/integrations/issue_tracker_data.rb
app/models/integrations/jenkins.rb
app/models/integrations/jira.rb
app/models/integrations/jira_tracker_data.rb
app/models/integrations/mattermost.rb
app/models/integrations/mattermost_slash_commands.rb
app/models/integrations/microsoft_teams.rb
app/models/integrations/mock_ci.rb
app/models/integrations/mock_monitoring.rb
app/models/integrations/packagist.rb
app/models/integrations/pipelines_email.rb
app/models/integrations/pivotaltracker.rb
app/models/integrations/prometheus.rb
app/models/integrations/pushover.rb
app/models/integrations/redmine.rb
app/models/integrations/shimo.rb
app/models/integrations/slack.rb
app/models/integrations/slack_slash_commands.rb
app/models/integrations/teamcity.rb
app/models/integrations/unify_circuit.rb
app/models/integrations/webex_teams.rb
app/models/integrations/youtrack.rb
app/models/integrations/zentao.rb
app/models/integrations/zentao_tracker_data.rb
app/models/jira_connect_installation.rb
app/models/jira_connect_subscription.rb
app/policies/integration_policy.rb
app/serializers/integrations/project_entity.rb
app/serializers/integrations/project_serializer.rb
app/services/ci/pipelines/hook_service.rb
app/services/concerns/integrations/project_test_data.rb
app/services/feature_flags/hook_service.rb
app/services/git/base_hooks_service.rb
app/services/git/branch_hooks_service.rb
app/services/git/tag_hooks_service.rb
app/services/incident_management/pager_duty/process_webhook_service.rb
app/services/integrations/test/base_service.rb
app/services/integrations/test/project_service.rb
app/services/jira/requests/base.rb
app/services/jira/requests/projects/list_service.rb
app/services/jira_connect/sync_service.rb
app/services/jira_connect_installations/destroy_service.rb
app/services/jira_connect_subscriptions/base_service.rb
app/services/jira_connect_subscriptions/create_service.rb
app/services/jira_import/cloud_users_mapper_service.rb
app/services/jira_import/server_users_mapper_service.rb
app/services/jira_import/start_import_service.rb
app/services/jira_import/users_importer.rb
app/services/jira_import/users_mapper_service.rb
app/services/members/mailgun/process_webhook_service.rb
app/services/system_hooks_service.rb
app/services/test_hooks/base_service.rb
app/services/test_hooks/project_service.rb
app/services/test_hooks/system_service.rb
app/services/web_hook_service.rb
app/services/web_hooks/destroy_service.rb
app/services/web_hooks/log_execution_service.rb
app/workers/build_hooks_worker.rb
app/workers/deployments/hooks_worker.rb
app/workers/file_hook_worker.rb
app/workers/integrations/create_external_cross_reference_worker.rb
app/workers/irker_worker.rb
app/workers/jira_connect/forward_event_worker.rb
app/workers/jira_connect/retry_request_worker.rb
app/workers/jira_connect/sync_branch_worker.rb
app/workers/jira_connect/sync_builds_worker.rb
app/workers/jira_connect/sync_deployments_worker.rb
app/workers/jira_connect/sync_feature_flags_worker.rb
app/workers/jira_connect/sync_merge_request_worker.rb
app/workers/jira_connect/sync_project_worker.rb
app/workers/pipeline_hooks_worker.rb
app/workers/project_service_worker.rb
app/workers/propagate_integration_group_worker.rb
app/workers/propagate_integration_inherit_descendant_worker.rb
app/workers/propagate_integration_inherit_worker.rb
app/workers/propagate_integration_project_worker.rb
app/workers/propagate_integration_worker.rb
app/workers/system_hook_push_worker.rb
app/workers/web_hook_worker.rb
app/workers/web_hooks/destroy_worker.rb
app/workers/web_hooks/log_execution_worker.rb
ee/app/controllers/concerns/ee/integrations/params.rb
ee/app/controllers/groups/hooks_controller.rb
ee/app/controllers/projects/integrations/jira/issues_controller.rb
ee/app/controllers/projects/integrations/zentao/issues_controller.rb
ee/app/finders/projects/integrations/jira/by_ids_finder.rb
ee/app/finders/projects/integrations/jira/issues_finder.rb
ee/app/helpers/ee/hooks_helper.rb
ee/app/helpers/ee/integrations_helper.rb
ee/app/models/concerns/approver_migrate_hook.rb
ee/app/models/ee/integration.rb
ee/app/models/ee/integrations/base_chat_notification.rb
ee/app/models/ee/integrations/jira.rb
ee/app/models/ee/project_hook.rb
ee/app/models/hooks/group_hook.rb
ee/app/models/integrations/chat_message/vulnerability_message.rb
ee/app/models/integrations/github.rb
ee/app/models/integrations/github/remote_project.rb
ee/app/models/integrations/github/status_message.rb
ee/app/models/integrations/github/status_notifier.rb
ee/app/models/integrations/gitlab_slack_application.rb
ee/app/serializers/integrations/jira_serializers/issue_detail_entity.rb
ee/app/serializers/integrations/jira_serializers/issue_detail_serializer.rb
ee/app/serializers/integrations/jira_serializers/issue_entity.rb
ee/app/serializers/integrations/jira_serializers/issue_serializer.rb
ee/app/serializers/integrations/zentao_serializers/issue_detail_entity.rb
ee/app/serializers/integrations/zentao_serializers/issue_detail_serializer.rb
ee/app/serializers/integrations/zentao_serializers/issue_entity.rb
ee/app/serializers/integrations/zentao_serializers/issue_serializer.rb
ee/app/services/ee/git/branch_hooks_service.rb
ee/app/services/ee/git/tag_hooks_service.rb
ee/app/services/ee/integrations/test/project_service.rb
ee/app/services/jira/jql_builder_service.rb
ee/app/services/jira/requests/issues/list_service.rb
ee/app/workers/create_github_webhook_worker.rb
ee/lib/ee/api/helpers/integrations_helpers.rb
ee/lib/ee/api/integrations.rb
ee/lib/ee/gitlab/hook_data/group_member_builder.rb
ee/lib/ee/gitlab/hook_data/issue_builder.rb
ee/lib/ee/gitlab/hook_data/user_builder.rb
ee/lib/ee/gitlab/integrations/sti_type.rb
ee/lib/gitlab/data_builder/vulnerability.rb
lib/api/entities/project_integration.rb
lib/api/entities/project_integration_basic.rb
lib/api/github/entities.rb
lib/api/helpers/integrations_helpers.rb
lib/api/integrations.rb
lib/api/v3/github.rb
lib/atlassian/jira_connect.rb
lib/atlassian/jira_connect/asymmetric_jwt.rb
lib/atlassian/jira_connect/client.rb
lib/atlassian/jira_connect/jira_user.rb
lib/atlassian/jira_connect/serializers/author_entity.rb
lib/atlassian/jira_connect/serializers/base_entity.rb
lib/atlassian/jira_connect/serializers/branch_entity.rb
lib/atlassian/jira_connect/serializers/build_entity.rb
lib/atlassian/jira_connect/serializers/commit_entity.rb
lib/atlassian/jira_connect/serializers/deployment_entity.rb
lib/atlassian/jira_connect/serializers/environment_entity.rb
lib/atlassian/jira_connect/serializers/feature_flag_entity.rb
lib/atlassian/jira_connect/serializers/file_entity.rb
lib/atlassian/jira_connect/serializers/pipeline_entity.rb
lib/atlassian/jira_connect/serializers/pull_request_entity.rb
lib/atlassian/jira_connect/serializers/repository_entity.rb
lib/atlassian/jira_issue_key_extractor.rb
lib/gitlab/auth/atlassian/auth_hash.rb
lib/gitlab/auth/atlassian/identity_linker.rb
lib/gitlab/auth/atlassian/user.rb
lib/gitlab/background_migration/backfill_integrations_type_new.rb
lib/gitlab/data_builder/alert.rb
lib/gitlab/data_builder/build.rb
lib/gitlab/data_builder/deployment.rb
lib/gitlab/data_builder/feature_flag.rb
lib/gitlab/data_builder/note.rb
lib/gitlab/data_builder/pipeline.rb
lib/gitlab/data_builder/push.rb
lib/gitlab/data_builder/repository.rb
lib/gitlab/data_builder/wiki_page.rb
lib/gitlab/hook_data/base_builder.rb
lib/gitlab/hook_data/group_builder.rb
lib/gitlab/hook_data/group_member_builder.rb
lib/gitlab/hook_data/issuable_builder.rb
lib/gitlab/hook_data/issue_builder.rb
lib/gitlab/hook_data/key_builder.rb
lib/gitlab/hook_data/merge_request_builder.rb
lib/gitlab/hook_data/note_builder.rb
lib/gitlab/hook_data/project_builder.rb
lib/gitlab/hook_data/project_member_builder.rb
lib/gitlab/hook_data/release_builder.rb
lib/gitlab/hook_data/subgroup_builder.rb
lib/gitlab/hook_data/user_builder.rb
lib/gitlab/hook_data/wiki_page_builder.rb
lib/gitlab/integrations/sti_type.rb

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Related to #343486 (closed)

Edited by Luke Duncalfe

Merge request reports