mirror of
https://github.com/go-gitea/gitea.git
synced 2025-10-06 00:45:50 +02:00
fix workflow_run action event processing
This commit is contained in:
parent
6df185423d
commit
a983d34622
@ -243,6 +243,10 @@ func detectMatched(gitRepo *git.Repository, commit *git.Commit, triggedEvent web
|
|||||||
webhook_module.HookEventPackage:
|
webhook_module.HookEventPackage:
|
||||||
return matchPackageEvent(payload.(*api.PackagePayload), evt)
|
return matchPackageEvent(payload.(*api.PackagePayload), evt)
|
||||||
|
|
||||||
|
case // registry_package
|
||||||
|
webhook_module.HookEventWorkflowRun:
|
||||||
|
return matchWorkflowRunEvent(payload.(*api.WorkflowRunPayload), evt)
|
||||||
|
|
||||||
default:
|
default:
|
||||||
log.Warn("unsupported event %q", triggedEvent)
|
log.Warn("unsupported event %q", triggedEvent)
|
||||||
return false
|
return false
|
||||||
@ -698,3 +702,45 @@ func matchPackageEvent(payload *api.PackagePayload, evt *jobparser.Event) bool {
|
|||||||
}
|
}
|
||||||
return matchTimes == len(evt.Acts())
|
return matchTimes == len(evt.Acts())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func matchWorkflowRunEvent(payload *api.WorkflowRunPayload, evt *jobparser.Event) bool {
|
||||||
|
// with no special filter parameters
|
||||||
|
if len(evt.Acts()) == 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
|
matchTimes := 0
|
||||||
|
// all acts conditions should be satisfied
|
||||||
|
for cond, vals := range evt.Acts() {
|
||||||
|
switch cond {
|
||||||
|
case "types":
|
||||||
|
action := payload.Action
|
||||||
|
for _, val := range vals {
|
||||||
|
if glob.MustCompile(val, '/').Match(string(action)) {
|
||||||
|
matchTimes++
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
case "workflows":
|
||||||
|
workflow := payload.Workflow
|
||||||
|
patterns, err := workflowpattern.CompilePatterns(vals...)
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if !workflowpattern.Skip(patterns, []string{workflow.Name}, &workflowpattern.EmptyTraceWriter{}) {
|
||||||
|
matchTimes++
|
||||||
|
}
|
||||||
|
case "branches":
|
||||||
|
patterns, err := workflowpattern.CompilePatterns(vals...)
|
||||||
|
if err != nil {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if !workflowpattern.Skip(patterns, []string{payload.WorkflowRun.HeadBranch}, &workflowpattern.EmptyTraceWriter{}) {
|
||||||
|
matchTimes++
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
log.Warn("package event unsupported condition %q", cond)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return matchTimes == len(evt.Acts())
|
||||||
|
}
|
||||||
|
@ -78,9 +78,9 @@ func checkJobsOfRun(ctx context.Context, runID int64) error {
|
|||||||
_ = job.LoadAttributes(ctx)
|
_ = job.LoadAttributes(ctx)
|
||||||
notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil)
|
notify_service.WorkflowJobStatusUpdate(ctx, job.Run.Repo, job.Run.TriggerUser, job, nil)
|
||||||
}
|
}
|
||||||
if len(updatedjobs) > 0 {
|
if len(jobs) > 0 {
|
||||||
runUpdated := true
|
runUpdated := true
|
||||||
run := updatedjobs[0].Run
|
run := jobs[0].Run
|
||||||
for _, job := range jobs {
|
for _, job := range jobs {
|
||||||
if !job.Status.IsDone() {
|
if !job.Status.IsDone() {
|
||||||
runUpdated = false
|
runUpdated = false
|
||||||
|
Loading…
x
Reference in New Issue
Block a user