Step 1/4: Begin using GraphQL on the Releases page
What does this MR do?
Partially updates the project Releases page to fetch its data from the GraphQL endpoint instead of the REST API.
What doesn't this MR do?
This MR does not update the Edit Release page, the New Release page, or the individual Release page to use the GraphQL endpoint. These pages will continue to use the REST API endpoint(s).
In addition, this MR does not implement pagination. In its current form, no pagination controls render (so only the first 20 items are shown). A follow up MR will implement these controls prior to the graphql_releases_page
feature flag being enabled.
Feature flag
This functionality requires three feature flags to be enabled:
-
graphql_releases_page
(disabled by default, introduced in this MR), which enables the frontend to query the GraphQL endpoint instead of the REST API. -
graphql_release_data
(enabled by default in !34937 (merged)), which enables the release data in the GraphQL endpoint, and -
graphql_milestone_stats
(enabled by default), which adds milestone statistics to the Milestone GraphQL type (used to compute Release statistics like % of issues that are open/closed.)
If any of these flags are disabled, the Releases page will use its current behavior (querying the REST API for data).
Screenshots
This MR makes no visual changes to the releases:
Before (REST endpoint) | After (GraphQL endpoint) |
---|---|
![]() |
![]() |
The Big PictureTM
This MR is one piece of a larger effort (#214241 (closed)):
- Step 1 (this MR): Update the frontend to fetch its data from the GraphQL endpoint (without any pagination)
- Step 2 (!41621 (merged)): Add pagination components (but don't use them yet)
- Step 3 (!41636 (merged)): Pass data through Vuex store instead of through
props
- Step 4 (!41441 (merged)): Begin using the components from step 2
Each of these steps are dependent on the preceding step.