2020-05-17 02:31:38 +03:00
// 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 (
"context"
"time"
"code.gitea.io/gitea/models"
repo_module "code.gitea.io/gitea/modules/repository"
"code.gitea.io/gitea/modules/setting"
2021-10-21 19:10:49 +03:00
"code.gitea.io/gitea/modules/updatechecker"
2021-11-16 16:30:11 +03:00
repo_service "code.gitea.io/gitea/services/repository"
2020-05-17 02:31:38 +03:00
)
func registerDeleteInactiveUsers ( ) {
RegisterTaskFatal ( "delete_inactive_accounts" , & OlderThanConfig {
BaseConfig : BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@annually" ,
} ,
OlderThan : 0 * time . Second ,
} , func ( ctx context . Context , _ * models . User , config Config ) error {
olderThanConfig := config . ( * OlderThanConfig )
return models . DeleteInactiveUsers ( ctx , olderThanConfig . OlderThan )
} )
}
func registerDeleteRepositoryArchives ( ) {
RegisterTaskFatal ( "delete_repo_archives" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@annually" ,
} , func ( ctx context . Context , _ * models . User , _ Config ) error {
2021-11-16 16:30:11 +03:00
return repo_service . DeleteRepositoryArchives ( ctx )
2020-05-17 02:31:38 +03:00
} )
}
func registerGarbageCollectRepositories ( ) {
type RepoHealthCheckConfig struct {
BaseConfig
Timeout time . Duration
Args [ ] string ` delim:" " `
}
RegisterTaskFatal ( "git_gc_repos" , & RepoHealthCheckConfig {
BaseConfig : BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} ,
Timeout : time . Duration ( setting . Git . Timeout . GC ) * time . Second ,
Args : setting . Git . GCArgs ,
} , func ( ctx context . Context , _ * models . User , config Config ) error {
rhcConfig := config . ( * RepoHealthCheckConfig )
return repo_module . GitGcRepos ( ctx , rhcConfig . Timeout , rhcConfig . Args ... )
} )
}
func registerRewriteAllPublicKeys ( ) {
RegisterTaskFatal ( "resync_all_sshkeys" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} , func ( _ context . Context , _ * models . User , _ Config ) error {
return models . RewriteAllPublicKeys ( )
} )
}
2020-10-11 03:38:09 +03:00
func registerRewriteAllPrincipalKeys ( ) {
RegisterTaskFatal ( "resync_all_sshprincipals" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} , func ( _ context . Context , _ * models . User , _ Config ) error {
return models . RewriteAllPrincipalKeys ( )
} )
}
2020-05-17 02:31:38 +03:00
func registerRepositoryUpdateHook ( ) {
RegisterTaskFatal ( "resync_all_hooks" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} , func ( ctx context . Context , _ * models . User , _ Config ) error {
2021-11-17 18:17:31 +03:00
return repo_service . SyncRepositoryHooks ( ctx )
2020-05-17 02:31:38 +03:00
} )
}
func registerReinitMissingRepositories ( ) {
RegisterTaskFatal ( "reinit_missing_repos" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} , func ( ctx context . Context , _ * models . User , _ Config ) error {
return repo_module . ReinitMissingRepositories ( ctx )
} )
}
func registerDeleteMissingRepositories ( ) {
RegisterTaskFatal ( "delete_missing_repos" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} , func ( ctx context . Context , user * models . User , _ Config ) error {
return repo_module . DeleteMissingRepositories ( ctx , user )
} )
}
func registerRemoveRandomAvatars ( ) {
RegisterTaskFatal ( "delete_generated_repository_avatars" , & BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 72h" ,
} , func ( ctx context . Context , _ * models . User , _ Config ) error {
return models . RemoveRandomAvatars ( ctx )
} )
}
2021-05-01 15:17:02 +03:00
func registerDeleteOldActions ( ) {
RegisterTaskFatal ( "delete_old_actions" , & OlderThanConfig {
BaseConfig : BaseConfig {
Enabled : false ,
RunAtStart : false ,
Schedule : "@every 168h" ,
} ,
OlderThan : 365 * 24 * time . Hour ,
} , func ( ctx context . Context , _ * models . User , config Config ) error {
olderThanConfig := config . ( * OlderThanConfig )
return models . DeleteOldActions ( olderThanConfig . OlderThan )
} )
}
2021-10-16 09:14:34 +03:00
func registerUpdateGiteaChecker ( ) {
type UpdateCheckerConfig struct {
BaseConfig
HTTPEndpoint string
}
RegisterTaskFatal ( "update_checker" , & UpdateCheckerConfig {
BaseConfig : BaseConfig {
Enabled : true ,
RunAtStart : false ,
Schedule : "@every 168h" ,
} ,
HTTPEndpoint : "https://dl.gitea.io/gitea/version.json" ,
} , func ( ctx context . Context , _ * models . User , config Config ) error {
updateCheckerConfig := config . ( * UpdateCheckerConfig )
2021-10-21 19:10:49 +03:00
return updatechecker . GiteaUpdateChecker ( updateCheckerConfig . HTTPEndpoint )
2021-10-16 09:14:34 +03:00
} )
}
2020-05-17 02:31:38 +03:00
func initExtendedTasks ( ) {
registerDeleteInactiveUsers ( )
registerDeleteRepositoryArchives ( )
registerGarbageCollectRepositories ( )
registerRewriteAllPublicKeys ( )
2020-10-11 03:38:09 +03:00
registerRewriteAllPrincipalKeys ( )
2020-05-17 02:31:38 +03:00
registerRepositoryUpdateHook ( )
registerReinitMissingRepositories ( )
registerDeleteMissingRepositories ( )
registerRemoveRandomAvatars ( )
2021-05-01 15:17:02 +03:00
registerDeleteOldActions ( )
2021-10-16 09:14:34 +03:00
registerUpdateGiteaChecker ( )
2020-05-17 02:31:38 +03:00
}