diff --git a/app/graphql/resolvers/release_resolver.rb b/app/graphql/resolvers/release_resolver.rb index 9bae8b8cd134b7c357f8ed60aa922d866021bc62..1edcc8c70b53bfd9e5a8458f1dac3024d8a9ce28 100644 --- a/app/graphql/resolvers/release_resolver.rb +++ b/app/graphql/resolvers/release_resolver.rb @@ -15,6 +15,8 @@ def self.single end def resolve(tag_name:) + return unless Feature.enabled?(:graphql_release_data, project, default_enabled: true) + ReleasesFinder.new( project, current_user, diff --git a/app/graphql/resolvers/releases_resolver.rb b/app/graphql/resolvers/releases_resolver.rb index b2afbb926847bdba3f105a76fe251a4b85b5fa21..85892c2abebfb46e33681f5b18b863cc527429af 100644 --- a/app/graphql/resolvers/releases_resolver.rb +++ b/app/graphql/resolvers/releases_resolver.rb @@ -12,6 +12,8 @@ def self.single end def resolve(**args) + return unless Feature.enabled?(:graphql_release_data, project, default_enabled: true) + ReleasesFinder.new( project, current_user diff --git a/app/graphql/types/project_type.rb b/app/graphql/types/project_type.rb index f83faa36396695a38bc11ee506a21fa49d8a00f5..cbc75b5770c3ba58aac3ec994213fc5fb02ac6e0 100644 --- a/app/graphql/types/project_type.rb +++ b/app/graphql/types/project_type.rb @@ -243,15 +243,13 @@ class ProjectType < BaseObject Types::ReleaseType.connection_type, null: true, description: 'Releases of the project', - resolver: Resolvers::ReleasesResolver, - feature_flag: :graphql_release_data + resolver: Resolvers::ReleasesResolver field :release, Types::ReleaseType, null: true, description: 'A single release of the project', resolver: Resolvers::ReleasesResolver.single, - feature_flag: :graphql_release_data, authorize: :download_code field :container_expiration_policy, diff --git a/changelogs/unreleased/nfriend-enable-graphql_release_data-feature-flag.yml b/changelogs/unreleased/nfriend-enable-graphql_release_data-feature-flag.yml new file mode 100644 index 0000000000000000000000000000000000000000..b56c2337149ba45f6dac777f4b95f89f936200de --- /dev/null +++ b/changelogs/unreleased/nfriend-enable-graphql_release_data-feature-flag.yml @@ -0,0 +1,5 @@ +--- +title: Add release data to GraphQL endpoint +merge_request: 34937 +author: +type: added diff --git a/doc/api/graphql/reference/gitlab_schema.graphql b/doc/api/graphql/reference/gitlab_schema.graphql index 772f79c2204f138ff0eae348c6fa3a0e3b90711a..502dac666ee1d0d8a008277ccea75fb511ed4095 100644 --- a/doc/api/graphql/reference/gitlab_schema.graphql +++ b/doc/api/graphql/reference/gitlab_schema.graphql @@ -9289,7 +9289,7 @@ type Project { publicJobs: Boolean """ - A single release of the project. Available only when feature flag `graphql_release_data` is enabled + A single release of the project """ release( """ @@ -9299,7 +9299,7 @@ type Project { ): Release """ - Releases of the project. Available only when feature flag `graphql_release_data` is enabled + Releases of the project """ releases( """ diff --git a/doc/api/graphql/reference/gitlab_schema.json b/doc/api/graphql/reference/gitlab_schema.json index e041c5270ca2b3437566c67a237b1a03ffca10d3..aecc533931e9483d5ddde679004b7ce307a556d9 100644 --- a/doc/api/graphql/reference/gitlab_schema.json +++ b/doc/api/graphql/reference/gitlab_schema.json @@ -27364,7 +27364,7 @@ }, { "name": "release", - "description": "A single release of the project. Available only when feature flag `graphql_release_data` is enabled", + "description": "A single release of the project", "args": [ { "name": "tagName", @@ -27391,7 +27391,7 @@ }, { "name": "releases", - "description": "Releases of the project. Available only when feature flag `graphql_release_data` is enabled", + "description": "Releases of the project", "args": [ { "name": "after", diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md index ab078c0697bc0366610dcf81b251061fcc25eeb7..bba6cd98b2763d582a9c9d415b0544aba7306438 100644 --- a/doc/api/graphql/reference/index.md +++ b/doc/api/graphql/reference/index.md @@ -1353,7 +1353,7 @@ Information about pagination in a connection. | `pipeline` | Pipeline | Build pipeline of the project | | `printingMergeRequestLinkEnabled` | Boolean | Indicates if a link to create or view a merge request should display after a push to Git repositories of the project from the command line | | `publicJobs` | Boolean | Indicates if there is public access to pipelines and job details of the project, including output logs and artifacts | -| `release` | Release | A single release of the project. Available only when feature flag `graphql_release_data` is enabled | +| `release` | Release | A single release of the project | | `removeSourceBranchAfterMerge` | Boolean | Indicates if `Delete source branch` option should be enabled by default for all new merge requests of the project | | `repository` | Repository | Git repository of the project | | `requestAccessEnabled` | Boolean | Indicates if users can request member access to the project | diff --git a/spec/requests/api/graphql/project/release_spec.rb b/spec/requests/api/graphql/project/release_spec.rb index bd3e5b5c34054b78eeb04af7266fc191c95c2144..f9c19d9747d89e71e9759fe25886f18efff89205 100644 --- a/spec/requests/api/graphql/project/release_spec.rb +++ b/spec/requests/api/graphql/project/release_spec.rb @@ -354,4 +354,21 @@ def query(rq = release_fields) end end end + + describe 'ensures that the release data can be contolled by a feature flag' do + context 'when the graphql_release_data feature flag is disabled' do + let_it_be(:project) { create(:project, :repository, :public) } + let_it_be(:release) { create(:release, project: project) } + + let(:current_user) { developer } + + before do + stub_feature_flags(graphql_release_data: false) + + project.add_developer(developer) + end + + it_behaves_like 'no access to the release field' + end + end end diff --git a/spec/requests/api/graphql/project/releases_spec.rb b/spec/requests/api/graphql/project/releases_spec.rb index 0d20acad2792d0b8f25012f80b0ff7ef42d278de..9d0387e64691d06e7b6949c51fea5b95a0758444 100644 --- a/spec/requests/api/graphql/project/releases_spec.rb +++ b/spec/requests/api/graphql/project/releases_spec.rb @@ -264,4 +264,21 @@ end end end + + describe 'ensures that the release data can be contolled by a feature flag' do + context 'when the graphql_release_data feature flag is disabled' do + let_it_be(:project) { create(:project, :repository, :public) } + let_it_be(:release) { create(:release, project: project) } + + let(:current_user) { developer } + + before do + stub_feature_flags(graphql_release_data: false) + + project.add_developer(developer) + end + + it_behaves_like 'no access to any release data' + end + end end