mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-22 05:15:22 +02:00
fix: simplify deleting
This commit is contained in:
parent
c3d7f15513
commit
eee662442a
@ -11,6 +11,7 @@ import (
|
|||||||
|
|
||||||
_ "image/jpeg" // Needed for jpeg support
|
_ "image/jpeg" // Needed for jpeg support
|
||||||
|
|
||||||
|
actions_model "code.gitea.io/gitea/models/actions"
|
||||||
activities_model "code.gitea.io/gitea/models/activities"
|
activities_model "code.gitea.io/gitea/models/activities"
|
||||||
admin_model "code.gitea.io/gitea/models/admin"
|
admin_model "code.gitea.io/gitea/models/admin"
|
||||||
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
asymkey_model "code.gitea.io/gitea/models/asymkey"
|
||||||
@ -26,6 +27,7 @@ import (
|
|||||||
"code.gitea.io/gitea/models/unit"
|
"code.gitea.io/gitea/models/unit"
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/models/webhook"
|
"code.gitea.io/gitea/models/webhook"
|
||||||
|
actions_module "code.gitea.io/gitea/modules/actions"
|
||||||
"code.gitea.io/gitea/modules/lfs"
|
"code.gitea.io/gitea/modules/lfs"
|
||||||
"code.gitea.io/gitea/modules/log"
|
"code.gitea.io/gitea/modules/log"
|
||||||
"code.gitea.io/gitea/modules/storage"
|
"code.gitea.io/gitea/modules/storage"
|
||||||
@ -52,6 +54,12 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
|||||||
defer committer.Close()
|
defer committer.Close()
|
||||||
sess := db.GetEngine(ctx)
|
sess := db.GetEngine(ctx)
|
||||||
|
|
||||||
|
// Query the action tasks of this repo, they will be needed after they have been deleted to remove the logs
|
||||||
|
tasks, err := actions_model.FindTasks(ctx, actions_model.FindTaskOptions{RepoID: repoID})
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("find actions tasks of repo %v: %w", repoID, err)
|
||||||
|
}
|
||||||
|
|
||||||
// In case is a organization.
|
// In case is a organization.
|
||||||
org, err := user_model.GetUserByID(ctx, uid)
|
org, err := user_model.GetUserByID(ctx, uid)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -152,6 +160,11 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
|||||||
&repo_model.Watch{RepoID: repoID},
|
&repo_model.Watch{RepoID: repoID},
|
||||||
&webhook.Webhook{RepoID: repoID},
|
&webhook.Webhook{RepoID: repoID},
|
||||||
&secret_model.Secret{RepoID: repoID},
|
&secret_model.Secret{RepoID: repoID},
|
||||||
|
&actions_model.ActionTaskStep{RepoID: repoID},
|
||||||
|
&actions_model.ActionTask{RepoID: repoID},
|
||||||
|
&actions_model.ActionRunJob{RepoID: repoID},
|
||||||
|
&actions_model.ActionRun{RepoID: repoID},
|
||||||
|
&actions_model.ActionRunner{RepoID: repoID},
|
||||||
); err != nil {
|
); err != nil {
|
||||||
return fmt.Errorf("deleteBeans: %w", err)
|
return fmt.Errorf("deleteBeans: %w", err)
|
||||||
}
|
}
|
||||||
@ -315,6 +328,15 @@ func DeleteRepository(doer *user_model.User, uid, repoID int64) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Finally, delete action logs after the actions have already been deleted to avoid new log files
|
||||||
|
for _, task := range tasks {
|
||||||
|
err := actions_module.RemoveLogs(ctx, task.LogInStorage, task.LogFilename)
|
||||||
|
if err != nil {
|
||||||
|
log.Error("remove log file %q: %v", task.LogFilename, err)
|
||||||
|
// go on
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,12 +10,9 @@ import (
|
|||||||
actions_model "code.gitea.io/gitea/models/actions"
|
actions_model "code.gitea.io/gitea/models/actions"
|
||||||
"code.gitea.io/gitea/models/db"
|
"code.gitea.io/gitea/models/db"
|
||||||
git_model "code.gitea.io/gitea/models/git"
|
git_model "code.gitea.io/gitea/models/git"
|
||||||
repo_model "code.gitea.io/gitea/models/repo"
|
|
||||||
user_model "code.gitea.io/gitea/models/user"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
webhook_model "code.gitea.io/gitea/models/webhook"
|
webhook_model "code.gitea.io/gitea/models/webhook"
|
||||||
actions_module "code.gitea.io/gitea/modules/actions"
|
|
||||||
"code.gitea.io/gitea/modules/graceful"
|
"code.gitea.io/gitea/modules/graceful"
|
||||||
"code.gitea.io/gitea/modules/log"
|
|
||||||
"code.gitea.io/gitea/modules/notification"
|
"code.gitea.io/gitea/modules/notification"
|
||||||
"code.gitea.io/gitea/modules/queue"
|
"code.gitea.io/gitea/modules/queue"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
@ -33,46 +30,6 @@ func Init() {
|
|||||||
notification.RegisterNotifier(NewNotifier())
|
notification.RegisterNotifier(NewNotifier())
|
||||||
}
|
}
|
||||||
|
|
||||||
func DeleteResourceOfRepository(ctx context.Context, repo *repo_model.Repository) error {
|
|
||||||
tasks, err := actions_model.FindTasks(ctx, actions_model.FindTaskOptions{RepoID: repo.ID})
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("find task of repo %v: %w", repo.ID, err)
|
|
||||||
}
|
|
||||||
|
|
||||||
if err := db.WithTx(ctx, func(ctx context.Context) error {
|
|
||||||
e := db.GetEngine(ctx)
|
|
||||||
if _, err := e.Delete(&actions_model.ActionTaskStep{RepoID: repo.ID}); err != nil {
|
|
||||||
return fmt.Errorf("delete actions task steps of repo %d: %w", repo.ID, err)
|
|
||||||
}
|
|
||||||
if _, err := e.Delete(&actions_model.ActionTask{RepoID: repo.ID}); err != nil {
|
|
||||||
return fmt.Errorf("delete actions tasks of repo %d: %w", repo.ID, err)
|
|
||||||
}
|
|
||||||
if _, err := e.Delete(&actions_model.ActionRunJob{RepoID: repo.ID}); err != nil {
|
|
||||||
return fmt.Errorf("delete actions run jobs of repo %d: %w", repo.ID, err)
|
|
||||||
}
|
|
||||||
if _, err := e.Delete(&actions_model.ActionRun{RepoID: repo.ID}); err != nil {
|
|
||||||
return fmt.Errorf("delete actions runs of repo %d: %w", repo.ID, err)
|
|
||||||
}
|
|
||||||
if _, err := e.Delete(&actions_model.ActionRunner{RepoID: repo.ID}); err != nil {
|
|
||||||
return fmt.Errorf("delete actions runner of repo %d: %w", repo.ID, err)
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
// remove logs file after tasks have been deleted, to avoid new log files
|
|
||||||
for _, task := range tasks {
|
|
||||||
err := actions_module.RemoveLogs(ctx, task.LogInStorage, task.LogFilename)
|
|
||||||
if err != nil {
|
|
||||||
log.Error("remove log file %q: %v", task.LogFilename, err)
|
|
||||||
// go on
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func CreateCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) error {
|
func CreateCommitStatus(ctx context.Context, job *actions_model.ActionRunJob) error {
|
||||||
if err := job.LoadAttributes(ctx); err != nil {
|
if err := job.LoadAttributes(ctx); err != nil {
|
||||||
return fmt.Errorf("load run: %w", err)
|
return fmt.Errorf("load run: %w", err)
|
||||||
|
@ -20,7 +20,6 @@ import (
|
|||||||
"code.gitea.io/gitea/modules/notification"
|
"code.gitea.io/gitea/modules/notification"
|
||||||
repo_module "code.gitea.io/gitea/modules/repository"
|
repo_module "code.gitea.io/gitea/modules/repository"
|
||||||
"code.gitea.io/gitea/modules/setting"
|
"code.gitea.io/gitea/modules/setting"
|
||||||
actions_service "code.gitea.io/gitea/services/actions"
|
|
||||||
pull_service "code.gitea.io/gitea/services/pull"
|
pull_service "code.gitea.io/gitea/services/pull"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -52,11 +51,6 @@ func DeleteRepository(ctx context.Context, doer *user_model.User, repo *repo_mod
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// deletes actions resource after the repo has been deleted, to avoid new tasks
|
|
||||||
if err := actions_service.DeleteResourceOfRepository(ctx, repo); err != nil {
|
|
||||||
return fmt.Errorf("delete actions resources failed: %w", err)
|
|
||||||
}
|
|
||||||
|
|
||||||
return packages_model.UnlinkRepositoryFromAllPackages(ctx, repo.ID)
|
return packages_model.UnlinkRepositoryFromAllPackages(ctx, repo.ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user