diff --git a/pkg/action/rollback.go b/pkg/action/rollback.go index dda8c700b..0440a79eb 100644 --- a/pkg/action/rollback.go +++ b/pkg/action/rollback.go @@ -110,8 +110,25 @@ func (r *Rollback) prepareRollback(name string) (*release.Release, *release.Rele previousVersion = currentRelease.Version - 1 } - r.cfg.Log("rolling back %s (current: v%d, target: v%d)", name, currentRelease.Version, previousVersion) + historyReleases, err := r.cfg.Releases.History(name) + if err != nil { + return nil, nil, err + } + // + previousVersionFound := false + for _, historyRelease := range historyReleases { + version := historyRelease.Version + if previousVersion == version { + previousVersionFound = true + break + } + } + if !previousVersionFound { + return nil, nil, errors.Errorf("release has no %d version", previousVersion) + } + + r.cfg.Log("rolling back %s (current: v%d, target: v%d)", name, currentRelease.Version, previousVersion) previousRelease, err := r.cfg.Releases.Get(name, previousVersion) if err != nil { return nil, nil, err