@@ -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