cron.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package cron
  2. import (
  3. "gitote/gitote/models"
  4. "gitote/gitote/pkg/setting"
  5. "time"
  6. raven "github.com/getsentry/raven-go"
  7. "gitlab.com/gitote/cron"
  8. log "gopkg.in/clog.v1"
  9. )
  10. var c = cron.New()
  11. func NewContext() {
  12. var (
  13. entry *cron.Entry
  14. err error
  15. )
  16. if setting.Cron.UpdateMirror.Enabled {
  17. entry, err = c.AddFunc("Update mirrors", setting.Cron.UpdateMirror.Schedule, models.MirrorUpdate)
  18. if err != nil {
  19. raven.CaptureErrorAndWait(err, nil)
  20. log.Fatal(2, "Cron.(update mirrors): %v", err)
  21. }
  22. if setting.Cron.UpdateMirror.RunAtStart {
  23. entry.Prev = time.Now()
  24. entry.ExecTimes++
  25. go models.MirrorUpdate()
  26. }
  27. }
  28. if setting.Cron.RepoHealthCheck.Enabled {
  29. entry, err = c.AddFunc("Repository health check", setting.Cron.RepoHealthCheck.Schedule, models.GitFsck)
  30. if err != nil {
  31. raven.CaptureErrorAndWait(err, nil)
  32. log.Fatal(2, "Cron.(repository health check): %v", err)
  33. }
  34. if setting.Cron.RepoHealthCheck.RunAtStart {
  35. entry.Prev = time.Now()
  36. entry.ExecTimes++
  37. go models.GitFsck()
  38. }
  39. }
  40. if setting.Cron.CheckRepoStats.Enabled {
  41. entry, err = c.AddFunc("Check repository statistics", setting.Cron.CheckRepoStats.Schedule, models.CheckRepoStats)
  42. if err != nil {
  43. raven.CaptureErrorAndWait(err, nil)
  44. log.Fatal(2, "Cron.(check repository statistics): %v", err)
  45. }
  46. if setting.Cron.CheckRepoStats.RunAtStart {
  47. entry.Prev = time.Now()
  48. entry.ExecTimes++
  49. go models.CheckRepoStats()
  50. }
  51. }
  52. if setting.Cron.RepoArchiveCleanup.Enabled {
  53. entry, err = c.AddFunc("Repository archive cleanup", setting.Cron.RepoArchiveCleanup.Schedule, models.DeleteOldRepositoryArchives)
  54. if err != nil {
  55. raven.CaptureErrorAndWait(err, nil)
  56. log.Fatal(2, "Cron.(repository archive cleanup): %v", err)
  57. }
  58. if setting.Cron.RepoArchiveCleanup.RunAtStart {
  59. entry.Prev = time.Now()
  60. entry.ExecTimes++
  61. go models.DeleteOldRepositoryArchives()
  62. }
  63. }
  64. c.Start()
  65. }
  66. // ListTasks returns all running cron tasks.
  67. func ListTasks() []*cron.Entry {
  68. return c.Entries()
  69. }