Check visibility of integrations dynamically in GraphQL ServiceTypeEnum

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

  • Close this issue

Summary

The available integrations are defined statically at https://gitlab.com/gitlab-org/gitlab/blob/6697a934fb5002bdb3a429f6299395541f7cdcea/app/graphql/types/projects/service_type_enum.rb#L8-10.

This means if we want to include an integration dynamically (e.g. by checking a feature flag in Integration.integration_names), the list in ServiceTypeEnum won't reflect this.

This came up in the MR for the new Zentao integration, which we want to keep disabled until it's ready: !67941 (comment 653940446)

Improvements

We need to change the definition of the enum so each value checks at runtime if it's visible.

I think we can use the visible? method from graphql-ruby for this: https://graphql-ruby.org/authorization/visibility.html

Involved components

  • app/graphql/types/projects/service_type_enum.rb
  • app/graphql/types/base_enum.rb (maybe)
Edited Sep 29, 2025 by 🤖 GitLab Bot 🤖
Assignee Loading
Time tracking Loading