Skip to content
This repository has been archived by the owner on Jan 8, 2024. It is now read-only.

Prune old releases #3730

Merged
merged 4 commits into from
Aug 31, 2022
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .changelog/3730.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
```release-note:bug
core: prune releases which released deployments that are being pruned during
a release
```
31 changes: 31 additions & 0 deletions internal/runner/operation_release.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,9 @@ func (r *Runner) executeReleaseOp(
// If we're pruning, then let's query the deployments we want to prune
// ahead of time so that fails fast.
var pruneDeploys []*pb.Deployment
// If we are pruning deployments, we also prune the releases which
// released the deployments we're pruning
var pruneReleases []*pb.Release
if op.Release.Prune {
// Determine the number of deployments to keep around.
retain := 2
Expand Down Expand Up @@ -148,9 +151,27 @@ func (r *Runner) executeReleaseOp(
// Mark for deletion
ds = append(ds, d)
}
rl, err := r.client.ListReleases(ctx, &pb.ListReleasesRequest{
Application: app.Ref(),
Workspace: project.WorkspaceRef(),
})
// Set up a slice of releases, whose max length is the # of releases
// we have
rs := make([]*pb.Release, 0, len(rl.Releases))
paladin-devops marked this conversation as resolved.
Show resolved Hide resolved
var rc int
for _, release := range rl.Releases {
for _, d := range ds {
if release.DeploymentId == d.Id {
rs = append(rs, release)
rc++
paladin-devops marked this conversation as resolved.
Show resolved Hide resolved
}
}

}

log.Info("will prune deploys", "len", len(ds))
pruneDeploys = ds
pruneReleases = rs[:rc]
paladin-devops marked this conversation as resolved.
Show resolved Hide resolved
}

// Do the release
Expand Down Expand Up @@ -181,6 +202,16 @@ func (r *Runner) executeReleaseOp(
}
}
}
if len(pruneReleases) > 0 {
log.Info("pruning releases", "len", len(pruneReleases))
app.UI.Output("Pruning old releases...", terminal.WithHeaderStyle())
for _, release := range pruneReleases {
app.UI.Output("Release: %s (v%d)", release.Id, release.Sequence, terminal.WithInfoStyle())
if err := app.DestroyRelease(ctx, release); err != nil {
return result, err
}
}
}

return result, nil
}