Update merge request pipelines table to use real pipeline creation data instead of fake skeleton loader
Overview
Update the merge request pipelines table to use actual pipeline creation data instead of the current "faked" skeleton loader that doesn't persist between page reloads. This is the final step towards making MR pipeline creation and the pipeline table support async pipeline creation.
Current Behavior
When a user clicks "Run pipeline" in a merge request:
- Frontend shows a temporary skeleton loader row in the pipelines table
- API call is made to create the pipeline asynchronously
- Toast message shows "Creating pipeline"
- Problem: The skeleton loader disappears if the user refreshes the page, even though pipeline creation is still in progress
Desired Behavior
After clicking "Run pipeline":
- API returns a pipeline creation request ID
- Pipeline table queries for actual pipeline creation status using this ID
- Real skeleton loaders persist between page reloads until pipeline creation completes
- Table updates in real-time as pipeline moves from "creating" → "succeeded/failed"
Technical Details
Current State
- MR pipeline creation uses REST API with
async: truebut doesn't return request ID - Backend stores creation requests in Redis via
Ci::PipelineCreation::Requests - GraphQL
pipelineCreatemutation exists but doesn't support MR pipelines (missing:merge_request_eventsource)
Required Changes
Backend:
- Add
pipeline_creation_requestsfield toMergeRequestTypeusingCi::PipelineCreation::Requests.for_merge_request() - Either: extend GraphQL
pipelineCreatemutation to support MR pipelines, OR return request ID from REST API
Frontend:
- Get pipeline creation request ID from API response
- Query
pipelineCreationRequestsinget_merge_request_pipelines.query.graphql - Replace fake
isLoadingwith realstatus === 'in_progress'inpipelines_table_wrapper.vue
Additional Details
-
project.ci_pipeline_creation_request(request_id)returns{ status, pipeline_id, error } -
Types::Ci::PipelineCreation::RequestTypewith status enumin_progress|succeeded|failed
Edited by 🤖 GitLab Bot 🤖