diff --git a/api/git/update/update.go b/api/git/update/update.go index 76d286669..39965a751 100644 --- a/api/git/update/update.go +++ b/api/git/update/update.go @@ -2,6 +2,7 @@ package update import ( "context" + "os" "strings" "time" @@ -78,6 +79,11 @@ func UpdateGitObject(ctx context.Context, gitService portainer.GitService, objId } if err := cloneGitRepository(ctx, gitService, cloneParams); err != nil { + if enableVersionFolder { + if removeErr := os.RemoveAll(toDir); removeErr != nil { + log.Warn().Err(removeErr).Str("dir", toDir).Msg("failed to remove partial clone directory") + } + } return false, "", errors.WithMessagef(err, "failed to do a fresh clone of %v", objId) } diff --git a/api/stacks/stackbuilders/director.go b/api/stacks/stackbuilders/director.go index 714352de7..f0a9ea7f1 100644 --- a/api/stacks/stackbuilders/director.go +++ b/api/stacks/stackbuilders/director.go @@ -51,7 +51,8 @@ func Build(ctx context.Context, dataStore dataservices.DataStore, builder stackB } func deploy(dataStore dataservices.DataStore, builder stackBuildProcess, stackID portainer.StackID, endpoint *portainer.Endpoint) { - ctx, cancel := context.WithTimeout(context.Background(), 15*time.Minute) + backgroundCtx := context.Background() + ctx, cancel := context.WithTimeout(backgroundCtx, 15*time.Minute) defer cancel() deployErr := builder.deploy(ctx, endpoint) @@ -83,7 +84,7 @@ func deploy(dataStore dataservices.DataStore, builder stackBuildProcess, stackID return } - if err := builder.postDeploy(ctx, stack); err != nil { + if err := builder.postDeploy(backgroundCtx, stack); err != nil { log.Error().Err(err). Int("stack_id", int(stackID)). Str("context", "deploy").