Preserve delivery outcomes when cleanup fails
This commit is contained in:
@@ -58,7 +58,11 @@ type Result struct {
|
||||
}
|
||||
|
||||
func Deliver(ctx context.Context, request Request) (Result, error) {
|
||||
result := Result{State: NotAttempted}
|
||||
return deliver(ctx, request, os.RemoveAll)
|
||||
}
|
||||
|
||||
func deliver(ctx context.Context, request Request, remove func(string) error) (result Result, resultErr error) {
|
||||
result = Result{State: NotAttempted}
|
||||
if !versioncontract.ValidStableVersion(request.Version) {
|
||||
return result, candidate.ErrInvalidVersion
|
||||
}
|
||||
@@ -130,7 +134,11 @@ func Deliver(ctx context.Context, request Request) (Result, error) {
|
||||
if err != nil {
|
||||
return result, fmt.Errorf("create temporary delivery build directory: %w", err)
|
||||
}
|
||||
defer os.RemoveAll(temporaryDir)
|
||||
defer func() {
|
||||
if err := remove(temporaryDir); err != nil {
|
||||
resultErr = errors.Join(resultErr, fmt.Errorf("remove delivery build directory %q: %w", temporaryDir, err))
|
||||
}
|
||||
}()
|
||||
built, err := internalbuild.BuildResolved(ctx, internalbuild.Request{
|
||||
Identity: identity,
|
||||
Spec: *request.Build,
|
||||
|
||||
Reference in New Issue
Block a user