mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-31 19:06:18 +01:00 
			
		
		
		
	Refactor Cron and merge dashboard tasks (#10745)
* Refactor Cron and merge dashboard tasks * Merge Cron and Dashboard tasks * Make every cron task report a system notice on completion * Refactor the creation of these tasks * Ensure that execution counts of tasks is correct * Allow cron tasks to be started from the cron page * golangci-lint fixes * Enforce that only one task with the same name can be registered Signed-off-by: Andrew Thornton <art27@cantab.net> * fix name check Signed-off-by: Andrew Thornton <art27@cantab.net> * as per @guillep2k * as per @lafriks Signed-off-by: Andrew Thornton <art27@cantab.net> * Add git.CommandContext variants Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		| @@ -4,129 +4,8 @@ | ||||
|  | ||||
| package setting | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
|  | ||||
| 	"code.gitea.io/gitea/modules/log" | ||||
| ) | ||||
|  | ||||
| var ( | ||||
|  | ||||
| 	// Cron tasks | ||||
| 	Cron = struct { | ||||
| 		UpdateMirror struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 		} `ini:"cron.update_mirrors"` | ||||
| 		RepoHealthCheck struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 			Timeout    time.Duration | ||||
| 			Args       []string `delim:" "` | ||||
| 		} `ini:"cron.repo_health_check"` | ||||
| 		CheckRepoStats struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 		} `ini:"cron.check_repo_stats"` | ||||
| 		ArchiveCleanup struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 			OlderThan  time.Duration | ||||
| 		} `ini:"cron.archive_cleanup"` | ||||
| 		SyncExternalUsers struct { | ||||
| 			Enabled        bool | ||||
| 			RunAtStart     bool | ||||
| 			Schedule       string | ||||
| 			UpdateExisting bool | ||||
| 		} `ini:"cron.sync_external_users"` | ||||
| 		DeletedBranchesCleanup struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 			OlderThan  time.Duration | ||||
| 		} `ini:"cron.deleted_branches_cleanup"` | ||||
| 		UpdateMigrationPosterID struct { | ||||
| 			Schedule string | ||||
| 		} `ini:"cron.update_migration_poster_id"` | ||||
| 	}{ | ||||
| 		UpdateMirror: struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 		}{ | ||||
| 			Enabled:    true, | ||||
| 			RunAtStart: false, | ||||
| 			Schedule:   "@every 10m", | ||||
| 		}, | ||||
| 		RepoHealthCheck: struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 			Timeout    time.Duration | ||||
| 			Args       []string `delim:" "` | ||||
| 		}{ | ||||
| 			Enabled:    true, | ||||
| 			RunAtStart: false, | ||||
| 			Schedule:   "@every 24h", | ||||
| 			Timeout:    60 * time.Second, | ||||
| 			Args:       []string{}, | ||||
| 		}, | ||||
| 		CheckRepoStats: struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 		}{ | ||||
| 			Enabled:    true, | ||||
| 			RunAtStart: true, | ||||
| 			Schedule:   "@every 24h", | ||||
| 		}, | ||||
| 		ArchiveCleanup: struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 			OlderThan  time.Duration | ||||
| 		}{ | ||||
| 			Enabled:    true, | ||||
| 			RunAtStart: true, | ||||
| 			Schedule:   "@every 24h", | ||||
| 			OlderThan:  24 * time.Hour, | ||||
| 		}, | ||||
| 		SyncExternalUsers: struct { | ||||
| 			Enabled        bool | ||||
| 			RunAtStart     bool | ||||
| 			Schedule       string | ||||
| 			UpdateExisting bool | ||||
| 		}{ | ||||
| 			Enabled:        true, | ||||
| 			RunAtStart:     false, | ||||
| 			Schedule:       "@every 24h", | ||||
| 			UpdateExisting: true, | ||||
| 		}, | ||||
| 		DeletedBranchesCleanup: struct { | ||||
| 			Enabled    bool | ||||
| 			RunAtStart bool | ||||
| 			Schedule   string | ||||
| 			OlderThan  time.Duration | ||||
| 		}{ | ||||
| 			Enabled:    true, | ||||
| 			RunAtStart: true, | ||||
| 			Schedule:   "@every 24h", | ||||
| 			OlderThan:  24 * time.Hour, | ||||
| 		}, | ||||
| 		UpdateMigrationPosterID: struct { | ||||
| 			Schedule string | ||||
| 		}{ | ||||
| 			Schedule: "@every 24h", | ||||
| 		}, | ||||
| 	} | ||||
| ) | ||||
|  | ||||
| func newCron() { | ||||
| 	if err := Cfg.Section("cron").MapTo(&Cron); err != nil { | ||||
| 		log.Fatal("Failed to map Cron settings: %v", err) | ||||
| 	} | ||||
| // GetCronSettings maps the cron subsection to the provided config | ||||
| func GetCronSettings(name string, config interface{}) (interface{}, error) { | ||||
| 	err := Cfg.Section("cron." + name).MapTo(config) | ||||
| 	return config, err | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user