Add approvalProjectRules to graphql endpoint
What does this MR do and why?
#362706 (closed) -> #372362 (closed)
Adds approvalRules collection under project.branchRules to display information about the approval rule for a given branch
How to set up and validate locally
- Find a project.full_path of a project that has at least one protected branch
rule = ApprovalProjectRule.last project = rule.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 and in the project (`"gdk.test:3000/#{project.full_path}/-/settings/repository"`) # create a protected branch and then link it with the code below. rule.protected_branches << project.protected_branches.first if rule.protected_branches.empty? project.full_path
- Or add an approval rule for a branch via UI: https://docs.gitlab.com/ee/user/project/merge_requests/approvals/rules.html#add-an-approval-rule
- 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)
- Visit http://gdk.test:3000/-/graphql-explorer
- Execute the following query, replace the full path value (as guest you should not see any rules)
{
project(fullPath: FULL_PATH) {
__typename
branchRules {
nodes {
approvalRules {
nodes {
id
name
type
approvalsRequired
eligibleApprovers {
nodes {
name
}
}
}
}
}
}
}
}
- Make yourself a maintainer
project.add_maintainer(user)
- Execute the following query, replace the full path value (as maintainer you should see all the rules)
{
project(fullPath: FULL_PATH) {
__typename
branchRules {
nodes {
approvalRules {
nodes {
id
name
type
approvalsRequired
eligibleApprovers {
nodes {
name
}
}
}
}
}
}
}
}
"All branches" and "All protected branches"
The approval rules created for "All branches" and "All protected branches" are going to be displayed separately: #372362 (comment 1090472612)
MR acceptance checklist
This checklist encourages us to confirm any changes have been analyzed to reduce risks in quality, performance, reliability, security, and maintainability.
-
I have evaluated the MR acceptance checklist for this MR.
Edited by Igor Drozdov