2021-02-07 17:37:27 +09:00
|
|
|
package controllers
|
|
|
|
|
|
|
|
|
|
import (
|
2021-06-22 17:55:06 +09:00
|
|
|
"github.com/actions-runner-controller/actions-runner-controller/api/v1alpha1"
|
|
|
|
|
"github.com/actions-runner-controller/actions-runner-controller/pkg/actionsglob"
|
2021-12-11 07:43:40 -05:00
|
|
|
"github.com/google/go-github/v39/github"
|
2021-02-07 17:37:27 +09:00
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) MatchCheckRunEvent(event *github.CheckRunEvent) func(scaleUpTrigger v1alpha1.ScaleUpTrigger) bool {
|
|
|
|
|
return func(scaleUpTrigger v1alpha1.ScaleUpTrigger) bool {
|
|
|
|
|
g := scaleUpTrigger.GitHubEvent
|
|
|
|
|
|
|
|
|
|
if g == nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
cr := g.CheckRun
|
|
|
|
|
|
|
|
|
|
if cr == nil {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if !matchTriggerConditionAgainstEvent(cr.Types, event.Action) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if cr.Status != "" && (event.CheckRun == nil || event.CheckRun.Status == nil || *event.CheckRun.Status != cr.Status) {
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
2021-03-14 10:21:42 +09:00
|
|
|
if checkRun := event.CheckRun; checkRun != nil && len(cr.Names) > 0 {
|
|
|
|
|
for _, pat := range cr.Names {
|
|
|
|
|
if r := actionsglob.Match(pat, checkRun.GetName()); r {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
2021-08-31 03:46:36 +03:00
|
|
|
if len(scaleUpTrigger.GitHubEvent.CheckRun.Repositories) > 0 {
|
|
|
|
|
for _, repository := range scaleUpTrigger.GitHubEvent.CheckRun.Repositories {
|
|
|
|
|
if repository == *event.Repo.Name {
|
|
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return false
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-07 17:37:27 +09:00
|
|
|
return true
|
|
|
|
|
}
|
|
|
|
|
}
|