feat: adding workflow_dispatch webhook event
This commit is contained in:
parent
8657a34f32
commit
d36d47fe66
|
|
@ -72,6 +72,7 @@ type GitHubEventScaleUpTriggerSpec struct {
|
|||
CheckRun *CheckRunSpec `json:"checkRun,omitempty"`
|
||||
PullRequest *PullRequestSpec `json:"pullRequest,omitempty"`
|
||||
Push *PushSpec `json:"push,omitempty"`
|
||||
WorkflowDispatch *WorkflowDispatchSpec `json:"push,omitempty"`
|
||||
}
|
||||
|
||||
// https://docs.github.com/en/actions/reference/events-that-trigger-workflows#check_run
|
||||
|
|
@ -101,6 +102,13 @@ type PullRequestSpec struct {
|
|||
type PushSpec struct {
|
||||
}
|
||||
|
||||
// WorkflowDispatchSpec is the condition for triggering scale-up on push event
|
||||
// Also see https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch
|
||||
type WorkflowDispatchSpec struct {
|
||||
Branches []string `json:"branches,omitempty"`
|
||||
BranchesIgnore []string `json:"branchesIgnore,omitempty"`
|
||||
}
|
||||
|
||||
// CapacityReservation specifies the number of replicas temporarily added
|
||||
// to the scale target until ExpirationTime.
|
||||
type CapacityReservation struct {
|
||||
|
|
|
|||
|
|
@ -157,6 +157,18 @@ spec:
|
|||
push:
|
||||
description: PushSpec is the condition for triggering scale-up on push event Also see https://docs.github.com/en/actions/reference/events-that-trigger-workflows#push
|
||||
type: object
|
||||
workflowDispatch:
|
||||
description: WorkflowDispatchSpec is the condition for triggering scale-up on workflow_dispatch event Also see https://docs.github.com/en/actions/reference/events-that-trigger-workflows#workflow_dispatch
|
||||
properties:
|
||||
branches:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
branchesIgnore:
|
||||
items:
|
||||
type: string
|
||||
type: array
|
||||
type: object
|
||||
type: object
|
||||
type: object
|
||||
type: array
|
||||
|
|
|
|||
|
|
@ -183,6 +183,15 @@ func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) Handle(w http.Respons
|
|||
"action", e.GetAction(),
|
||||
)
|
||||
}
|
||||
case *gogithub.WorkflowDispatchEvent:
|
||||
target, err = autoscaler.getScaleUpTarget(
|
||||
context.TODO(),
|
||||
log,
|
||||
e.Repo.GetName(),
|
||||
e.Repo.Owner.GetLogin(),
|
||||
e.Repo.Owner.GetType(),
|
||||
autoscaler.WorkflowDispatchEvent(e),
|
||||
)
|
||||
case *gogithub.WorkflowJobEvent:
|
||||
if workflowJob := e.GetWorkflowJob(); workflowJob != nil {
|
||||
log = log.WithValues(
|
||||
|
|
|
|||
|
|
@ -0,0 +1,35 @@
|
|||
package controllers
|
||||
|
||||
import (
|
||||
"github.com/actions-runner-controller/actions-runner-controller/api/v1alpha1"
|
||||
"github.com/google/go-github/v37/github"
|
||||
)
|
||||
|
||||
// MatchPushEvent()
|
||||
func (autoscaler *HorizontalRunnerAutoscalerGitHubWebhook) MatchWorkflowDispatchEvent(event *github.PushEvent) func(scaleUpTrigger v1alpha1.ScaleUpTrigger) bool {
|
||||
return func(scaleUpTrigger v1alpha1.ScaleUpTrigger) bool {
|
||||
g := scaleUpTrigger.GitHubEvent
|
||||
|
||||
if g == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
WorkflowDispatch := g.WorkflowDispatch
|
||||
|
||||
if WorkflowDispatch == nil {
|
||||
return false
|
||||
}
|
||||
|
||||
// event.Ref = Branch that received dispatch
|
||||
// event.Ref = refs/heads/branch-name
|
||||
if !matchTriggerConditionAgainstEvent(WorkflowDispatch.Branches, event.Ref) {
|
||||
return false
|
||||
}
|
||||
|
||||
if matchTriggerConditionAgainstEvent(WorkflowDispatch.BranchesIgnore, event.Ref) {
|
||||
return false
|
||||
}
|
||||
|
||||
return true
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue