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

tasks_actions.go 1.8KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. // Copyright 2022 The Gitea Authors. All rights reserved.
  2. // SPDX-License-Identifier: MIT
  3. package cron
  4. import (
  5. "context"
  6. user_model "code.gitea.io/gitea/models/user"
  7. "code.gitea.io/gitea/modules/setting"
  8. actions_service "code.gitea.io/gitea/services/actions"
  9. )
  10. func initActionsTasks() {
  11. if !setting.Actions.Enabled {
  12. return
  13. }
  14. registerStopZombieTasks()
  15. registerStopEndlessTasks()
  16. registerCancelAbandonedJobs()
  17. registerScheduleTasks()
  18. }
  19. func registerStopZombieTasks() {
  20. RegisterTaskFatal("stop_zombie_tasks", &BaseConfig{
  21. Enabled: true,
  22. RunAtStart: true,
  23. Schedule: "@every 5m",
  24. }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
  25. return actions_service.StopZombieTasks(ctx)
  26. })
  27. }
  28. func registerStopEndlessTasks() {
  29. RegisterTaskFatal("stop_endless_tasks", &BaseConfig{
  30. Enabled: true,
  31. RunAtStart: true,
  32. Schedule: "@every 30m",
  33. }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
  34. return actions_service.StopEndlessTasks(ctx)
  35. })
  36. }
  37. func registerCancelAbandonedJobs() {
  38. RegisterTaskFatal("cancel_abandoned_jobs", &BaseConfig{
  39. Enabled: true,
  40. RunAtStart: true,
  41. Schedule: "@every 6h",
  42. }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
  43. return actions_service.CancelAbandonedJobs(ctx)
  44. })
  45. }
  46. // registerScheduleTasks registers a scheduled task that runs every minute to start any due schedule tasks.
  47. func registerScheduleTasks() {
  48. // Register the task with a unique name, enabled status, and schedule for every minute.
  49. RegisterTaskFatal("start_schedule_tasks", &BaseConfig{
  50. Enabled: true,
  51. RunAtStart: false,
  52. Schedule: "@every 1m",
  53. }, func(ctx context.Context, _ *user_model.User, cfg Config) error {
  54. // Call the function to start schedule tasks and pass the context.
  55. return actions_service.StartScheduleTasks(ctx)
  56. })
  57. }