You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

tasks_basic.go 9.2 kB

2 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
3 years ago
2 years ago
2 years ago
2 years ago
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. // Copyright 2020 The Gitea Authors. All rights reserved.
  2. // Use of this source code is governed by a MIT-style
  3. // license that can be found in the LICENSE file.
  4. package cron
  5. import (
  6. "context"
  7. "time"
  8. "code.gitea.io/gitea/modules/setting"
  9. "code.gitea.io/gitea/modules/urfs_client/urchin"
  10. cloudbrainService "code.gitea.io/gitea/services/cloudbrain"
  11. "code.gitea.io/gitea/modules/modelarts"
  12. "code.gitea.io/gitea/services/cloudbrain/resource"
  13. "code.gitea.io/gitea/services/reward"
  14. "code.gitea.io/gitea/models"
  15. "code.gitea.io/gitea/modules/migrations"
  16. repository_service "code.gitea.io/gitea/modules/repository"
  17. "code.gitea.io/gitea/routers/repo"
  18. mirror_service "code.gitea.io/gitea/services/mirror"
  19. )
  20. func registerUpdateMirrorTask() {
  21. RegisterTaskFatal("update_mirrors", &BaseConfig{
  22. Enabled: true,
  23. RunAtStart: false,
  24. Schedule: "@every 10m",
  25. }, func(ctx context.Context, _ *models.User, _ Config) error {
  26. return mirror_service.Update(ctx)
  27. })
  28. }
  29. func registerRepoHealthCheck() {
  30. type RepoHealthCheckConfig struct {
  31. BaseConfig
  32. Timeout time.Duration
  33. Args []string `delim:" "`
  34. }
  35. RegisterTaskFatal("repo_health_check", &RepoHealthCheckConfig{
  36. BaseConfig: BaseConfig{
  37. Enabled: true,
  38. RunAtStart: false,
  39. Schedule: "@every 24h",
  40. },
  41. Timeout: 60 * time.Second,
  42. Args: []string{},
  43. }, func(ctx context.Context, _ *models.User, config Config) error {
  44. rhcConfig := config.(*RepoHealthCheckConfig)
  45. return repository_service.GitFsck(ctx, rhcConfig.Timeout, rhcConfig.Args)
  46. })
  47. }
  48. func registerCheckRepoStats() {
  49. RegisterTaskFatal("check_repo_stats", &BaseConfig{
  50. Enabled: true,
  51. RunAtStart: true,
  52. Schedule: "@every 24h",
  53. }, func(ctx context.Context, _ *models.User, _ Config) error {
  54. return models.CheckRepoStats(ctx)
  55. })
  56. }
  57. func registerArchiveCleanup() {
  58. RegisterTaskFatal("archive_cleanup", &OlderThanConfig{
  59. BaseConfig: BaseConfig{
  60. Enabled: true,
  61. RunAtStart: true,
  62. Schedule: "@every 24h",
  63. },
  64. OlderThan: 24 * time.Hour,
  65. }, func(ctx context.Context, _ *models.User, config Config) error {
  66. acConfig := config.(*OlderThanConfig)
  67. return models.DeleteOldRepositoryArchives(ctx, acConfig.OlderThan)
  68. })
  69. }
  70. func registerSyncExternalUsers() {
  71. RegisterTaskFatal("sync_external_users", &UpdateExistingConfig{
  72. BaseConfig: BaseConfig{
  73. Enabled: true,
  74. RunAtStart: false,
  75. Schedule: "@every 24h",
  76. },
  77. UpdateExisting: true,
  78. }, func(ctx context.Context, _ *models.User, config Config) error {
  79. realConfig := config.(*UpdateExistingConfig)
  80. return models.SyncExternalUsers(ctx, realConfig.UpdateExisting)
  81. })
  82. }
  83. func registerDeletedBranchesCleanup() {
  84. RegisterTaskFatal("deleted_branches_cleanup", &OlderThanConfig{
  85. BaseConfig: BaseConfig{
  86. Enabled: true,
  87. RunAtStart: true,
  88. Schedule: "@every 24h",
  89. },
  90. OlderThan: 24 * time.Hour,
  91. }, func(ctx context.Context, _ *models.User, config Config) error {
  92. realConfig := config.(*OlderThanConfig)
  93. models.RemoveOldDeletedBranches(ctx, realConfig.OlderThan)
  94. return nil
  95. })
  96. }
  97. func registerUpdateMigrationPosterID() {
  98. RegisterTaskFatal("update_migration_poster_id", &BaseConfig{
  99. Enabled: true,
  100. RunAtStart: true,
  101. Schedule: "@every 24h",
  102. }, func(ctx context.Context, _ *models.User, _ Config) error {
  103. return migrations.UpdateMigrationPosterID(ctx)
  104. })
  105. }
  106. func registerHandleUnDecompressAttachment() {
  107. RegisterTaskFatal("handle_undecompress_attachment", &BaseConfig{
  108. Enabled: true,
  109. RunAtStart: true,
  110. Schedule: "@every 10m",
  111. }, func(ctx context.Context, _ *models.User, _ Config) error {
  112. repo.HandleUnDecompressAttachment()
  113. return nil
  114. })
  115. }
  116. func registerHandleModelSafetyTask() {
  117. RegisterTaskFatal("handle_modelsafety_task", &BaseConfig{
  118. Enabled: true,
  119. RunAtStart: true,
  120. Schedule: "@every 5m",
  121. }, func(ctx context.Context, _ *models.User, _ Config) error {
  122. repo.TimerHandleModelSafetyTestTask()
  123. return nil
  124. })
  125. }
  126. func registerHandleBlockChainUnSuccessUsers() {
  127. RegisterTaskFatal("handle_blockchain_unsuccess_users", &BaseConfig{
  128. Enabled: true,
  129. RunAtStart: true,
  130. Schedule: "@every 10m",
  131. }, func(ctx context.Context, _ *models.User, _ Config) error {
  132. repo.HandleBlockChainUnSuccessUsers()
  133. return nil
  134. })
  135. }
  136. func registerHandleBlockChainUnSuccessRepos() {
  137. RegisterTaskFatal("handle_blockchain_unsuccess_repos", &BaseConfig{
  138. Enabled: true,
  139. RunAtStart: true,
  140. Schedule: "@every 10m",
  141. }, func(ctx context.Context, _ *models.User, _ Config) error {
  142. repo.HandleBlockChainUnSuccessRepos()
  143. return nil
  144. })
  145. }
  146. func registerHandleBlockChainMergedPulls() {
  147. RegisterTaskFatal("handle_blockchain_merged_pull", &BaseConfig{
  148. Enabled: true,
  149. RunAtStart: true,
  150. Schedule: "@every 10m",
  151. }, func(ctx context.Context, _ *models.User, _ Config) error {
  152. repo.HandleBlockChainMergedPulls()
  153. return nil
  154. })
  155. }
  156. func registerHandleBlockChainUnSuccessCommits() {
  157. RegisterTaskFatal("handle_blockchain_unsuccess_commits", &BaseConfig{
  158. Enabled: true,
  159. RunAtStart: true,
  160. Schedule: "@every 10m",
  161. }, func(ctx context.Context, _ *models.User, _ Config) error {
  162. repo.HandleBlockChainUnSuccessCommits()
  163. return nil
  164. })
  165. }
  166. func registerHandleRepoAndUserStatistic() {
  167. RegisterTaskFatal("handle_repo_and_user_statistic", &BaseConfig{
  168. Enabled: true,
  169. RunAtStart: false,
  170. Schedule: "@daily",
  171. }, func(ctx context.Context, _ *models.User, _ Config) error {
  172. repo.StatisticAuto()
  173. return nil
  174. })
  175. }
  176. func registerHandleClearCloudbrainResult() {
  177. RegisterTaskFatal("handle_cloudbrain_one_result_clear", &BaseConfig{
  178. Enabled: true,
  179. RunAtStart: setting.ClearStrategy.RunAtStart,
  180. Schedule: setting.ClearStrategy.Cron,
  181. }, func(ctx context.Context, _ *models.User, _ Config) error {
  182. cloudbrainService.ClearCloudbrainResultSpace()
  183. return nil
  184. })
  185. }
  186. func registerHandleSummaryStatistic() {
  187. RegisterTaskFatal("handle_summary_statistic", &BaseConfig{
  188. Enabled: true,
  189. RunAtStart: false,
  190. Schedule: "@daily",
  191. }, func(ctx context.Context, _ *models.User, _ Config) error {
  192. repo.SummaryStatistic()
  193. return nil
  194. })
  195. }
  196. func registerHandleOrgStatistic() {
  197. RegisterTaskFatal("handle_org_statistic", &BaseConfig{
  198. Enabled: true,
  199. RunAtStart: false,
  200. Schedule: "0 0 2 * * ?",
  201. }, func(ctx context.Context, _ *models.User, _ Config) error {
  202. models.UpdateOrgStatistics()
  203. return nil
  204. })
  205. }
  206. func registerSyncCloudbrainStatus() {
  207. RegisterTaskFatal("sync_cloudbrain_status", &BaseConfig{
  208. Enabled: true,
  209. RunAtStart: false,
  210. Schedule: "@every 10m",
  211. }, func(ctx context.Context, _ *models.User, _ Config) error {
  212. repo.SyncCloudbrainStatus()
  213. return nil
  214. })
  215. }
  216. func registerHandleScheduleRecord() {
  217. RegisterTaskFatal("handle_schedule_record", &BaseConfig{
  218. Enabled: true,
  219. RunAtStart: false,
  220. Schedule: "@every 1m",
  221. }, func(ctx context.Context, _ *models.User, _ Config) error {
  222. urchin.HandleScheduleRecords()
  223. return nil
  224. })
  225. }
  226. func registerRewardPeriodTask() {
  227. RegisterTaskFatal("reward_period_task", &BaseConfig{
  228. Enabled: true,
  229. RunAtStart: true,
  230. Schedule: "@every 1m",
  231. }, func(ctx context.Context, _ *models.User, _ Config) error {
  232. reward.StartRewardTask()
  233. return nil
  234. })
  235. }
  236. func registerCloudbrainPointDeductTask() {
  237. RegisterTaskFatal("cloudbrain_point_deduct_task", &BaseConfig{
  238. Enabled: true,
  239. RunAtStart: true,
  240. Schedule: "@every 1m",
  241. }, func(ctx context.Context, _ *models.User, _ Config) error {
  242. reward.StartCloudbrainPointDeductTask()
  243. return nil
  244. })
  245. }
  246. func registerSyncResourceSpecs() {
  247. RegisterTaskFatal("sync_grampus_specs", &BaseConfig{
  248. Enabled: true,
  249. RunAtStart: true,
  250. Schedule: "0 0 1 * * ?",
  251. }, func(ctx context.Context, _ *models.User, _ Config) error {
  252. resource.SyncGrampusQueueAndSpecs()
  253. return nil
  254. })
  255. }
  256. func registerSyncModelArtsTempJobs() {
  257. RegisterTaskFatal("sync_model_arts_temp_jobs", &BaseConfig{
  258. Enabled: true,
  259. RunAtStart: false,
  260. Schedule: "@every 1m",
  261. }, func(ctx context.Context, _ *models.User, _ Config) error {
  262. modelarts.SyncTempStatusJob()
  263. return nil
  264. })
  265. }
  266. func registerHandleCloudbrainDurationStatistic() {
  267. RegisterTaskFatal("handle_cloudbrain_duration_statistic", &BaseConfig{
  268. Enabled: true,
  269. RunAtStart: false,
  270. Schedule: "1 1 * * * ?",
  271. }, func(ctx context.Context, _ *models.User, _ Config) error {
  272. repo.CloudbrainDurationStatisticHour()
  273. return nil
  274. })
  275. }
  276. func initBasicTasks() {
  277. registerUpdateMirrorTask()
  278. registerRepoHealthCheck()
  279. registerCheckRepoStats()
  280. registerArchiveCleanup()
  281. registerSyncExternalUsers()
  282. registerDeletedBranchesCleanup()
  283. registerUpdateMigrationPosterID()
  284. registerHandleUnDecompressAttachment()
  285. registerHandleBlockChainUnSuccessUsers()
  286. registerHandleBlockChainUnSuccessRepos()
  287. registerHandleBlockChainMergedPulls()
  288. registerHandleBlockChainUnSuccessCommits()
  289. registerHandleRepoAndUserStatistic()
  290. registerHandleSummaryStatistic()
  291. registerHandleClearCloudbrainResult()
  292. registerSyncCloudbrainStatus()
  293. registerHandleOrgStatistic()
  294. registerSyncResourceSpecs()
  295. registerSyncModelArtsTempJobs()
  296. //registerRewardPeriodTask()
  297. registerCloudbrainPointDeductTask()
  298. registerHandleModelSafetyTask()
  299. registerHandleScheduleRecord()
  300. registerHandleCloudbrainDurationStatistic()
  301. }