github.com/helmwave/helmwave@v0.36.4-0.20240509190856-b35563eba4c6/pkg/release/rollback.go (about) 1 package release 2 3 import ( 4 "context" 5 "fmt" 6 7 "github.com/helmwave/helmwave/pkg/helper" 8 ) 9 10 func (rel *config) Rollback(ctx context.Context, version int) (err error) { 11 ctx = helper.ContextWithReleaseUniq(ctx, rel.Uniq()) 12 13 // Run hooks 14 err = rel.Lifecycle.RunPreRollback(ctx) 15 if err != nil { 16 return 17 } 18 19 defer func() { 20 lifecycleErr := rel.Lifecycle.RunPostRollback(ctx) 21 if lifecycleErr != nil { 22 rel.Logger().Errorf("got an error from postrollback hooks: %v", lifecycleErr) 23 if err == nil { 24 err = lifecycleErr 25 } 26 } 27 }() 28 29 client := rel.newRollback() 30 31 if version > 0 { 32 client.Version = version 33 rel.Logger().Infof("Be careful! Rollback to %d revision", version) 34 } 35 36 err = client.Run(rel.Name()) 37 if err != nil { 38 err = fmt.Errorf("failed to rollback release %s: %w", rel.Uniq(), err) 39 } 40 41 return 42 }