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: true
but doesn't return request ID - Backend stores creation requests in Redis via
Ci::PipelineCreation::Requests
- GraphQL
pipelineCreate
mutation exists but doesn't support MR pipelines (missing:merge_request_event
source)
Required Changes
Backend:
- Add
pipeline_creation_requests
field toMergeRequestType
usingCi::PipelineCreation::Requests.for_merge_request()
- Either: extend GraphQL
pipelineCreate
mutation to support MR pipelines, OR return request ID from REST API
Frontend:
- Get pipeline creation request ID from API response
- Query
pipelineCreationRequests
inget_merge_request_pipelines.query.graphql
- Replace fake
isLoading
with realstatus === 'in_progress'
inpipelines_table_wrapper.vue
Additional Details
-
project.ci_pipeline_creation_request(request_id)
returns{ status, pipeline_id, error }
-
Types::Ci::PipelineCreation::RequestType
with status enumin_progress|succeeded|failed
Edited by 🤖 GitLab Bot 🤖