mirror of
https://git.vectorsigma.ru/public/atlantis.git
synced 2026-07-28 22:28:25 +00:00
fix: Ignore apply check(s) even if missing from rollup when determining mergeability for GitHub (#4974)
Signed-off-by: Henrik Lundström <henrik94lundstrom@gmail.com>
This commit is contained in:
@@ -714,8 +714,7 @@ func CheckRunPassed(checkRun CheckRun) bool {
|
||||
}
|
||||
|
||||
func StatusContextPassed(statusContext StatusContext, vcsstatusname string) bool {
|
||||
return strings.HasPrefix(string(statusContext.Context), fmt.Sprintf("%s/%s", vcsstatusname, command.Apply.String())) ||
|
||||
statusContext.State == "SUCCESS"
|
||||
return statusContext.State == "SUCCESS"
|
||||
}
|
||||
|
||||
func ExpectedCheckPassed(expectedContext githubv4.String, checkRuns []CheckRun, statusContexts []StatusContext, vcsstatusname string) bool {
|
||||
@@ -775,6 +774,10 @@ func (g *GithubClient) IsMergeableMinusApply(logger logging.SimpleLogging, repo
|
||||
// Go through all checks and workflows required by branch protection or rulesets
|
||||
// Make sure that they can all be found in the statusCheckRollup and that they all pass
|
||||
for _, requiredCheck := range requiredChecks {
|
||||
if strings.HasPrefix(string(requiredCheck), fmt.Sprintf("%s/%s", vcsstatusname, command.Apply.String())) {
|
||||
// Ignore atlantis apply check(s)
|
||||
continue
|
||||
}
|
||||
if !ExpectedCheckPassed(requiredCheck, checkRuns, statusContexts, vcsstatusname) {
|
||||
logger.Debug("%s: Expected Required Check: %s", notMergeablePrefix, requiredCheck)
|
||||
return false, nil
|
||||
|
||||
@@ -691,6 +691,12 @@ func TestGithubClient_PullIsMergeableWithAllowMergeableBypassApply(t *testing.T)
|
||||
`"APPROVED"`,
|
||||
false,
|
||||
},
|
||||
{
|
||||
"blocked",
|
||||
"ruleset-atlantis-apply-expected.json",
|
||||
`"APPROVED"`,
|
||||
true,
|
||||
},
|
||||
{
|
||||
"blocked",
|
||||
"ruleset-optional-check-failed.json",
|
||||
|
||||
52
server/events/vcs/testdata/github-pull-request-mergeability/ruleset-atlantis-apply-expected.json
vendored
Normal file
52
server/events/vcs/testdata/github-pull-request-mergeability/ruleset-atlantis-apply-expected.json
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"data": {
|
||||
"repository": {
|
||||
"pullRequest": {
|
||||
"reviewDecision": null,
|
||||
"baseRef": {
|
||||
"branchProtectionRule": {
|
||||
"requiredStatusChecks": []
|
||||
},
|
||||
"rules": {
|
||||
"pageInfo": {
|
||||
"endCursor": "QWERTY",
|
||||
"hasNextPage": false
|
||||
},
|
||||
"nodes": [
|
||||
{
|
||||
"type": "REQUIRED_STATUS_CHECKS",
|
||||
"repositoryRuleset": {
|
||||
"enforcement": "ACTIVE"
|
||||
},
|
||||
"parameters": {
|
||||
"requiredStatusChecks": [
|
||||
{
|
||||
"context": "atlantis/apply"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"commits": {
|
||||
"nodes": [
|
||||
{
|
||||
"commit": {
|
||||
"statusCheckRollup": {
|
||||
"contexts": {
|
||||
"pageInfo": {
|
||||
"endCursor": "QWERTY",
|
||||
"hasNextPage": false
|
||||
},
|
||||
"nodes": []
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user