Backend GraphQL support for Pipeline Graph
This is an issue to cover the backend additions we need to bring GraphQL to the pipeline graph, which is part of #249094 (closed) and #223262 (closed).
As I work through the frontend portions of the code, I am identifying what needs to be added to resolvers. This description will grow.
Add Status to CiJob, CiGroup, CiStage Types
This is the query I am currently working with:
query getPipelineDetails($projectPath: ID!, $iid: ID!) {
project(fullPath: $projectPath) {
pipeline(iid: $iid) {
stages {
nodes {
name
status @client
groups {
nodes {
status @client
name
size
jobs {
nodes {
name
needs {
nodes {
name
}
}
status @client
}
}
}
}
}
}
}
}
}
This is where the client resolver showing the status shape is evolving: https://gitlab.com/gitlab-org/gitlab/-/blob/graphql-to-pipeline-graph/app/assets/javascripts/pipelines/pipeline_details_graph.js#L8
Add Scheduled/Scheduled At to CiJob Type
I do not know whether these should be two fields or one that returns a map.
Add Triggered and Triggered By Information to the Pipeline
Currently these return an entire recursive pipeline, but this is an opportunity to return just the data we need to display the basic information and the data we need to fetch the pipeline when it is toggled.
I would also like to use this as an opportunity to rename triggered
and triggered_by
arrays to upstream
and downstream
because they are much less confusing. So we'd have this query:
query getPipelineDetails($projectPath: ID!, $iid: ID!) {
project(fullPath: $projectPath) {
pipeline(iid: $iid) {
upstream { # currently called triggered_by, an array of Pipelines
nodes {
iid
path
project {
iid
name
fullPath
}
status {
label
icon
group
}
sourceJob {
name
}
}
}
downstream { # currently called triggered, an array of Pipelines
nodes {
id
path
project {
iid
name
fullPath
}
status {
label
icon
group
}
sourceJob {
iid
name
}
}
}
stages {
.. this we already have ..
}
}
}
}
Add Mutations for Action Button
I've opened a new issue for this one, as it is requires some other work before it's ready on the frontend. #257861 (closed)