Skip to content

GraphQL CI API: add job filters [RUN AS-IF-FOSS]

Alex Kalderimis requested to merge ajk-graphql-ci-jobs into master

What does this MR do?

This adds new GraphQL features to supply CI build result information.

This adds the edge Pipeline.job to fetch a single job by name. Edges are added from CiJob -> Stage and Stage -> [CiJob]..

Summary of changes:

  • Filtering Pipeline.jobs by status
  • New fields on CiJob.
  • Fetch single job by name or ID with Pipeline.job

Example Query

 query($path: ID!, $name: String) {
   project(fullPath: $path) {
     pipelines(first: 1) {
       nodes {
         jobs(statuses: [SUCCESS]) {
           name duration
         }
         job(name: $name) {
           name
           status
         }
        }
      }
    }
  }

These new features are accessible through any Pipeline node. So the following is also a new query we can express:

query($path: ID!, $mrIID: String, $name: String) {
   project(fullPath: $path) {
     mergeRequest(iid: $mrIID) {
       headPipeline {
         jobs(statuses: [FAILED]) {
           name
         }
       } 
     }
   }
 }

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Alex Kalderimis

Merge request reports