Skip to content

Commit

Permalink
fix(build): update latest even if higher prereleases are present
Browse files Browse the repository at this point in the history
Signed-off-by: Luca Guerra <luca@guerra.sh>
  • Loading branch information
LucaGuerra authored and poiana committed Sep 12, 2023
1 parent c6e01fa commit 18d7045
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 5 deletions.
13 changes: 8 additions & 5 deletions build/registry/tag.go
Original file line number Diff line number Diff line change
Expand Up @@ -100,22 +100,25 @@ func ociTagsToUpdate(newTag string, existingTags []string) []string {
return tagsToUpdate
}

var existingSemvers []semver.Version
var existingFinalSemvers []semver.Version
for _, tag := range existingTags {
if sv, err := semver.Parse(tag); err == nil {
existingSemvers = append(existingSemvers, sv)
// ignore prereleases
if len(sv.Pre) == 0 {
existingFinalSemvers = append(existingFinalSemvers, sv)
}
}
}

if isLatestSemverForMinor(newSemver, existingSemvers) {
if isLatestSemverForMinor(newSemver, existingFinalSemvers) {
tagsToUpdate = append(tagsToUpdate, fmt.Sprintf("%d.%d", newSemver.Major, newSemver.Minor))
}

if isLatestSemverForMajor(newSemver, existingSemvers) {
if isLatestSemverForMajor(newSemver, existingFinalSemvers) {
tagsToUpdate = append(tagsToUpdate, fmt.Sprintf("%d", newSemver.Major))
}

if isLatestSemver(newSemver, existingSemvers) {
if isLatestSemver(newSemver, existingFinalSemvers) {
tagsToUpdate = append(tagsToUpdate, "latest")
}

Expand Down
2 changes: 2 additions & 0 deletions build/registry/tag_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,8 @@ func Test_ociTagsToUpdate(t *testing.T) {
{"latest_in_line", "0.1.3", []string{"0.1.2", "0.2.0", "0.3.1"}, []string{"0.1.3", "0.1"}},
{"version_1", "1.0.2", []string{"0.1.2", "0.2.0", "1.0.0", "2.0.0", "2.0.2"}, []string{"1", "1.0", "1.0.2"}},
{"prerelease", "0.1.4-rc1", []string{"0.1.2", "0.1.3"}, []string{"0.1.4-rc1"}},
{"latest_with_prerelease", "1.0.2", []string{"1.0.0", "1.0.1", "2.0.0-rc1"}, []string{"1", "1.0", "1.0.2", "latest"}},
{"not_latest_with_prerelease", "1.0.2", []string{"1.0.0", "1.0.1", "2.0.0-rc1", "2.0.0"}, []string{"1", "1.0", "1.0.2"}},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
Expand Down

0 comments on commit 18d7045

Please sign in to comment.