Skip to content

Add externalStatusChecks to graphql endpoint

Joe Woodward requested to merge feat/graphql-branch-rules--status-checks into master

What does this MR do and why?

#362706 (closed) -> #372362 (closed)

Adds externalStatusChecks collection under project.branchRules to display information about the approval rule for a given branch

How to set up and validate locally

  1. Find a project.full_path of a project that has at least one protected branch
       # If you don't have any ExternalStatusChecks configured go to gdk.test:3000/flightjs/Flight/-/settings/merge_requests
       # and configure one in the `Status Checks` section
       status_check = MergeRequests::ExternalStatusCheck.last
       project = status_check.project
       # If you don't have any protected branches this will fail to link the approval rule to the
       # protected branch and therefore will not be returned in GraphiQL.
       # Go to gdk.test:3000/flightjs/Flight/-/settings/repository and create a protected branch and then link it 
       # with the code below.
       status_check.protected_branches << project.protected_branches.first if status_check.protected_branches.empty?
       project.full_path
  2. Test permissions by assigning yourself as a guest to the project
      # user = User.find_by(email: "YOUR_EMAIL") # Use this if you do not use the default admin user in GDK
      user = User.find_by(email: "admin@example.com")
      project.add_guest(user)
  3. Visit http://gdk.test:3000/-/graphql-explorer
  4. Execute the following query, replace the full path value (as guest you should not see any rules)
     {
       project(fullPath: "flightjs/Flight") {
         branchRules {
           nodes {
             externalStatusChecks {
               id
               name
               externalUrl
             }
           }
         }
       }
     }
  5. Make yourself a maintainer
      project.add_maintainer(user)
  6. Execute the following query, replace the full path value (as maintainer you should see all the rules)
     {
       project(fullPath: "flightjs/Flight") {
         branchRules {
           nodes {
             externalStatusChecks {
               id
               name
               externalUrl
             }
           }
         }
       }
     }

MR acceptance checklist

This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.

Edited by Joe Woodward

Merge request reports

Loading