@@ -246,6 +246,10 @@ func detectMatched(gitRepo *git.Repository, commit *git.Commit, triggedEvent web
246246 webhook_module .HookEventPackage :
247247 return matchPackageEvent (payload .(* api.PackagePayload ), evt )
248248
249+ case // workflow_run
250+ webhook_module .HookEventWorkflowRun :
251+ return matchWorkflowRunEvent (payload .(* api.WorkflowRunPayload ), evt )
252+
249253 default :
250254 log .Warn ("unsupported event %q" , triggedEvent )
251255 return false
@@ -691,3 +695,53 @@ func matchPackageEvent(payload *api.PackagePayload, evt *jobparser.Event) bool {
691695 }
692696 return matchTimes == len (evt .Acts ())
693697}
698+
699+ func matchWorkflowRunEvent (payload * api.WorkflowRunPayload , evt * jobparser.Event ) bool {
700+ // with no special filter parameters
701+ if len (evt .Acts ()) == 0 {
702+ return true
703+ }
704+
705+ matchTimes := 0
706+ // all acts conditions should be satisfied
707+ for cond , vals := range evt .Acts () {
708+ switch cond {
709+ case "types" :
710+ action := payload .Action
711+ for _ , val := range vals {
712+ if glob .MustCompile (val , '/' ).Match (action ) {
713+ matchTimes ++
714+ break
715+ }
716+ }
717+ case "workflows" :
718+ workflow := payload .Workflow
719+ patterns , err := workflowpattern .CompilePatterns (vals ... )
720+ if err != nil {
721+ break
722+ }
723+ if ! workflowpattern .Skip (patterns , []string {workflow .Name }, & workflowpattern.EmptyTraceWriter {}) {
724+ matchTimes ++
725+ }
726+ case "branches" :
727+ patterns , err := workflowpattern .CompilePatterns (vals ... )
728+ if err != nil {
729+ break
730+ }
731+ if ! workflowpattern .Skip (patterns , []string {payload .WorkflowRun .HeadBranch }, & workflowpattern.EmptyTraceWriter {}) {
732+ matchTimes ++
733+ }
734+ case "branches-ignore" :
735+ patterns , err := workflowpattern .CompilePatterns (vals ... )
736+ if err != nil {
737+ break
738+ }
739+ if ! workflowpattern .Filter (patterns , []string {payload .WorkflowRun .HeadBranch }, & workflowpattern.EmptyTraceWriter {}) {
740+ matchTimes ++
741+ }
742+ default :
743+ log .Warn ("workflow run event unsupported condition %q" , cond )
744+ }
745+ }
746+ return matchTimes == len (evt .Acts ())
747+ }
0 commit comments