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