mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-29 10:57:44 +09:00 
			
		
		
		
	Fix schedule tasks bugs (#28691)
Fix #28157 This PR fix the possible bugs about actions schedule. ## The Changes - Move `UpdateRepositoryUnit` and `SetRepoDefaultBranch` from models to service layer - Remove schedules plan from database and cancel waiting & running schedules tasks in this repository when actions unit has been disabled or global disabled. - Remove schedules plan from database and cancel waiting & running schedules tasks in this repository when default branch changed.
This commit is contained in:
		| @@ -22,7 +22,7 @@ import ( | ||||
|  | ||||
| type DetectedWorkflow struct { | ||||
| 	EntryName    string | ||||
| 	TriggerEvent string | ||||
| 	TriggerEvent *jobparser.Event | ||||
| 	Content      []byte | ||||
| } | ||||
|  | ||||
| @@ -100,6 +100,7 @@ func DetectWorkflows( | ||||
| 	commit *git.Commit, | ||||
| 	triggedEvent webhook_module.HookEventType, | ||||
| 	payload api.Payloader, | ||||
| 	detectSchedule bool, | ||||
| ) ([]*DetectedWorkflow, []*DetectedWorkflow, error) { | ||||
| 	entries, err := ListWorkflows(commit) | ||||
| 	if err != nil { | ||||
| @@ -114,6 +115,7 @@ func DetectWorkflows( | ||||
| 			return nil, nil, err | ||||
| 		} | ||||
|  | ||||
| 		// one workflow may have multiple events | ||||
| 		events, err := GetEventsFromContent(content) | ||||
| 		if err != nil { | ||||
| 			log.Warn("ignore invalid workflow %q: %v", entry.Name(), err) | ||||
| @@ -122,17 +124,18 @@ func DetectWorkflows( | ||||
| 		for _, evt := range events { | ||||
| 			log.Trace("detect workflow %q for event %#v matching %q", entry.Name(), evt, triggedEvent) | ||||
| 			if evt.IsSchedule() { | ||||
| 				dwf := &DetectedWorkflow{ | ||||
| 					EntryName:    entry.Name(), | ||||
| 					TriggerEvent: evt.Name, | ||||
| 					Content:      content, | ||||
| 				if detectSchedule { | ||||
| 					dwf := &DetectedWorkflow{ | ||||
| 						EntryName:    entry.Name(), | ||||
| 						TriggerEvent: evt, | ||||
| 						Content:      content, | ||||
| 					} | ||||
| 					schedules = append(schedules, dwf) | ||||
| 				} | ||||
| 				schedules = append(schedules, dwf) | ||||
| 			} | ||||
| 			if detectMatched(gitRepo, commit, triggedEvent, payload, evt) { | ||||
| 			} else if detectMatched(gitRepo, commit, triggedEvent, payload, evt) { | ||||
| 				dwf := &DetectedWorkflow{ | ||||
| 					EntryName:    entry.Name(), | ||||
| 					TriggerEvent: evt.Name, | ||||
| 					TriggerEvent: evt, | ||||
| 					Content:      content, | ||||
| 				} | ||||
| 				workflows = append(workflows, dwf) | ||||
| @@ -153,7 +156,8 @@ func detectMatched(gitRepo *git.Repository, commit *git.Commit, triggedEvent web | ||||
| 		webhook_module.HookEventCreate, | ||||
| 		webhook_module.HookEventDelete, | ||||
| 		webhook_module.HookEventFork, | ||||
| 		webhook_module.HookEventWiki: | ||||
| 		webhook_module.HookEventWiki, | ||||
| 		webhook_module.HookEventSchedule: | ||||
| 		if len(evt.Acts()) != 0 { | ||||
| 			log.Warn("Ignore unsupported %s event arguments %v", triggedEvent, evt.Acts()) | ||||
| 		} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user