Skip to content

Commit

Permalink
Added Support to overwrite build info with same build number (#45)
Browse files Browse the repository at this point in the history
  • Loading branch information
bhanurp authored Feb 19, 2025
1 parent 746cc7a commit 9bcf054
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 3 deletions.
25 changes: 25 additions & 0 deletions artifactory/commands/buildinfo/publish.go
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,20 @@ func (bpc *BuildPublishCommand) Run() error {
}
bpc.buildConfiguration.SetBuildNumber(buildInfo.Number)
}
if bpc.config.Overwrite {
project := bpc.buildConfiguration.GetProject()
buildRuns, found, err := servicesManager.GetBuildRuns(services.BuildInfoParams{BuildName: buildName, ProjectKey: project})
if err != nil {
return err
}
if found {
buildNumbersFrequency := CalculateBuildNumberFrequency(buildRuns)
err = servicesManager.DeleteBuildInfo(buildInfo, project, buildNumbersFrequency[buildNumber])
if err != nil {
return err
}
}
}
summary, err := servicesManager.PublishBuildInfo(buildInfo, bpc.buildConfiguration.GetProject())
if bpc.IsDetailedSummary() {
bpc.SetSummary(summary)
Expand Down Expand Up @@ -166,6 +180,17 @@ func (bpc *BuildPublishCommand) Run() error {
return logJsonOutput(buildLink)
}

// CalculateBuildNumberFrequency since the build number is not unique, we need to calculate the frequency of each build number
// in order to delete the correct number of builds and then publish the new build.
func CalculateBuildNumberFrequency(runs *buildinfo.BuildRuns) map[string]int {
frequency := make(map[string]int)
for _, run := range runs.BuildsNumbers {
buildNumber := strings.TrimPrefix(run.Uri, "/")
frequency[buildNumber]++
}
return frequency
}

func logJsonOutput(buildInfoUiUrl string) error {
output := formats.BuildPublishOutput{BuildInfoUiUrl: buildInfoUiUrl}
results, err := output.JSON()
Expand Down
49 changes: 49 additions & 0 deletions artifactory/commands/buildinfo/publish_test.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package buildinfo

import (
buildinfo "github.com/jfrog/build-info-go/entities"
"strconv"
"testing"
"time"
Expand Down Expand Up @@ -54,3 +55,51 @@ func TestPrintBuildInfoLink(t *testing.T) {
assert.Equal(t, buildPubComService, linkTypes[i].expected)
}
}

func TestCalculateBuildNumberFrequency(t *testing.T) {
tests := []struct {
name string
runs *buildinfo.BuildRuns
expected map[string]int
}{
{
name: "Single build number",
runs: &buildinfo.BuildRuns{
BuildsNumbers: []buildinfo.BuildRun{{Uri: "/1"}},
},
expected: map[string]int{"1": 1},
},
{
name: "Single build number with special characters",
runs: &buildinfo.BuildRuns{
BuildsNumbers: []buildinfo.BuildRun{{Uri: "/1-"}},
},
expected: map[string]int{"1-": 1},
},
{
name: "Multiple build numbers",
runs: &buildinfo.BuildRuns{
BuildsNumbers: []buildinfo.BuildRun{
{Uri: "/1"},
{Uri: "/2"},
{Uri: "/1"},
},
},
expected: map[string]int{"1": 2, "2": 1},
},
{
name: "No build numbers",
runs: &buildinfo.BuildRuns{
BuildsNumbers: []buildinfo.BuildRun{},
},
expected: map[string]int{},
},
}

for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
result := CalculateBuildNumberFrequency(tt.runs)
assert.Equal(t, tt.expected, result)
})
}
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ require (

replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250212021126-e5223ab616af

// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250126110945-81abbdde452f
replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20250219065446-e17342f27e44

//replace github.com/jfrog/jfrog-cli-core/v2 => github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20240811150357-12a9330a2d67
//replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.28.1-0.20240811142930-ab9715567376
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ github.com/jfrog/gofrog v1.7.6 h1:QmfAiRzVyaI7JYGsB7cxfAJePAZTzFz0gRWZSE27c6s=
github.com/jfrog/gofrog v1.7.6/go.mod h1:ntr1txqNOZtHplmaNd7rS4f8jpA5Apx8em70oYEe7+4=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250212021126-e5223ab616af h1:XnyhhyARP1YCzYGdhk8ovpyZV+hSchiTGVTuejrZXsI=
github.com/jfrog/jfrog-cli-core/v2 v2.31.1-0.20250212021126-e5223ab616af/go.mod h1:Hx2houXADsNv0eRh4w5XCS2uSsPNPn1OmiSDdwGFB7g=
github.com/jfrog/jfrog-client-go v1.50.0 h1:t7v/zpLkPomHR6ZjVbPQ1WPQJd9IFKESK9Tt6phZz3k=
github.com/jfrog/jfrog-client-go v1.50.0/go.mod h1:xHxwKBjPSUBd/FyCWgusfHmSWKUZTkfOZkTmntC2F5Y=
github.com/jfrog/jfrog-client-go v1.28.1-0.20250219065446-e17342f27e44 h1:Q2S65q8vk4Yb0B95XGCkcJJCUmJoKsDO5w/A1l6guJ8=
github.com/jfrog/jfrog-client-go v1.28.1-0.20250219065446-e17342f27e44/go.mod h1:hDoUcW6LZme83YNFbdSRImV+di1x0GP+Nlw7fctkwtE=
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kevinburke/ssh_config v1.2.0 h1:x584FjTGwHzMwvHx18PXxbBVzfnxogHaAReU4gf13a4=
Expand Down

0 comments on commit 9bcf054

Please sign in to comment.