// Copyright 2020 The Gitea Authors. All rights reserved. // Use of this source code is governed by a MIT-style // license that can be found in the LICENSE file. package cron import ( "code.gitea.io/gitea/modules/urfs_client/urchin" "context" "time" "code.gitea.io/gitea/modules/modelarts" "code.gitea.io/gitea/services/cloudbrain/resource" "code.gitea.io/gitea/services/reward" "code.gitea.io/gitea/models" "code.gitea.io/gitea/modules/migrations" repository_service "code.gitea.io/gitea/modules/repository" "code.gitea.io/gitea/routers/repo" mirror_service "code.gitea.io/gitea/services/mirror" ) func registerUpdateMirrorTask() { RegisterTaskFatal("update_mirrors", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { return mirror_service.Update(ctx) }) } func registerRepoHealthCheck() { type RepoHealthCheckConfig struct { BaseConfig Timeout time.Duration Args []string `delim:" "` } RegisterTaskFatal("repo_health_check", &RepoHealthCheckConfig{ BaseConfig: BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@every 24h", }, Timeout: 60 * time.Second, Args: []string{}, }, func(ctx context.Context, _ *models.User, config Config) error { rhcConfig := config.(*RepoHealthCheckConfig) return repository_service.GitFsck(ctx, rhcConfig.Timeout, rhcConfig.Args) }) } func registerCheckRepoStats() { RegisterTaskFatal("check_repo_stats", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 24h", }, func(ctx context.Context, _ *models.User, _ Config) error { return models.CheckRepoStats(ctx) }) } func registerArchiveCleanup() { RegisterTaskFatal("archive_cleanup", &OlderThanConfig{ BaseConfig: BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 24h", }, OlderThan: 24 * time.Hour, }, func(ctx context.Context, _ *models.User, config Config) error { acConfig := config.(*OlderThanConfig) return models.DeleteOldRepositoryArchives(ctx, acConfig.OlderThan) }) } func registerSyncExternalUsers() { RegisterTaskFatal("sync_external_users", &UpdateExistingConfig{ BaseConfig: BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@every 24h", }, UpdateExisting: true, }, func(ctx context.Context, _ *models.User, config Config) error { realConfig := config.(*UpdateExistingConfig) return models.SyncExternalUsers(ctx, realConfig.UpdateExisting) }) } func registerDeletedBranchesCleanup() { RegisterTaskFatal("deleted_branches_cleanup", &OlderThanConfig{ BaseConfig: BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 24h", }, OlderThan: 24 * time.Hour, }, func(ctx context.Context, _ *models.User, config Config) error { realConfig := config.(*OlderThanConfig) models.RemoveOldDeletedBranches(ctx, realConfig.OlderThan) return nil }) } func registerUpdateMigrationPosterID() { RegisterTaskFatal("update_migration_poster_id", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 24h", }, func(ctx context.Context, _ *models.User, _ Config) error { return migrations.UpdateMigrationPosterID(ctx) }) } func registerHandleUnDecompressAttachment() { RegisterTaskFatal("handle_undecompress_attachment", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.HandleUnDecompressAttachment() return nil }) } func registerHandleModelSafetyTask() { RegisterTaskFatal("handle_modelsafety_task", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 5m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.TimerHandleModelSafetyTestTask() return nil }) } func registerHandleBlockChainUnSuccessUsers() { RegisterTaskFatal("handle_blockchain_unsuccess_users", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.HandleBlockChainUnSuccessUsers() return nil }) } func registerHandleBlockChainUnSuccessRepos() { RegisterTaskFatal("handle_blockchain_unsuccess_repos", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.HandleBlockChainUnSuccessRepos() return nil }) } func registerHandleBlockChainMergedPulls() { RegisterTaskFatal("handle_blockchain_merged_pull", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.HandleBlockChainMergedPulls() return nil }) } func registerHandleBlockChainUnSuccessCommits() { RegisterTaskFatal("handle_blockchain_unsuccess_commits", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.HandleBlockChainUnSuccessCommits() return nil }) } func registerHandleRepoAndUserStatistic() { RegisterTaskFatal("handle_repo_and_user_statistic", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@daily", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.StatisticAuto() return nil }) } func registerHandleSummaryStatistic() { RegisterTaskFatal("handle_summary_statistic", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@daily", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.SummaryStatistic() return nil }) } func registerHandleOrgStatistic() { RegisterTaskFatal("handle_org_statistic", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "0 0 2 * * ?", }, func(ctx context.Context, _ *models.User, _ Config) error { models.UpdateOrgStatistics() return nil }) } func registerSyncCloudbrainStatus() { RegisterTaskFatal("sync_cloudbrain_status", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@every 10m", }, func(ctx context.Context, _ *models.User, _ Config) error { repo.SyncCloudbrainStatus() return nil }) } func registerHandleScheduleRecord() { RegisterTaskFatal("handle_schedule_record", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@every 1m", }, func(ctx context.Context, _ *models.User, _ Config) error { urchin.HandleScheduleRecords() return nil }) } func registerRewardPeriodTask() { RegisterTaskFatal("reward_period_task", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 1m", }, func(ctx context.Context, _ *models.User, _ Config) error { reward.StartRewardTask() return nil }) } func registerCloudbrainPointDeductTask() { RegisterTaskFatal("cloudbrain_point_deduct_task", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "@every 1m", }, func(ctx context.Context, _ *models.User, _ Config) error { reward.StartCloudbrainPointDeductTask() return nil }) } func registerSyncResourceSpecs() { RegisterTaskFatal("sync_grampus_specs", &BaseConfig{ Enabled: true, RunAtStart: true, Schedule: "0 0 1 * * ?", }, func(ctx context.Context, _ *models.User, _ Config) error { resource.SyncGrampusQueueAndSpecs() return nil }) } func registerSyncModelArtsTempJobs() { RegisterTaskFatal("sync_model_arts_temp_jobs", &BaseConfig{ Enabled: true, RunAtStart: false, Schedule: "@every 1m", }, func(ctx context.Context, _ *models.User, _ Config) error { modelarts.SyncTempStatusJob() return nil }) } func initBasicTasks() { registerUpdateMirrorTask() registerRepoHealthCheck() registerCheckRepoStats() registerArchiveCleanup() registerSyncExternalUsers() registerDeletedBranchesCleanup() registerUpdateMigrationPosterID() registerHandleUnDecompressAttachment() registerHandleBlockChainUnSuccessUsers() registerHandleBlockChainUnSuccessRepos() registerHandleBlockChainMergedPulls() registerHandleBlockChainUnSuccessCommits() registerHandleRepoAndUserStatistic() registerHandleSummaryStatistic() registerSyncCloudbrainStatus() registerHandleOrgStatistic() registerSyncResourceSpecs() registerSyncModelArtsTempJobs() //registerRewardPeriodTask() registerCloudbrainPointDeductTask() registerHandleModelSafetyTask() registerHandleScheduleRecord() }