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