Skip to content

Commit

Permalink
V1 - Bug fix - Build-info link is wrong when used with projects (#323)
Browse files Browse the repository at this point in the history
  • Loading branch information
eyalbe4 authored Jan 27, 2022
1 parent e8b4ad0 commit 506a2a3
Show file tree
Hide file tree
Showing 5 changed files with 83 additions and 8 deletions.
45 changes: 42 additions & 3 deletions artifactory/commands/buildinfo/publish.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,13 @@ package buildinfo

import (
"fmt"
"github.com/jfrog/jfrog-client-go/artifactory"
clientutils "github.com/jfrog/jfrog-client-go/utils"
"github.com/jfrog/jfrog-client-go/utils/log"
"sort"
"strconv"
"strings"
"time"

"github.com/jfrog/jfrog-cli-core/artifactory/utils"
"github.com/jfrog/jfrog-cli-core/utils/config"
Expand Down Expand Up @@ -88,13 +93,47 @@ func (bpc *BuildPublishCommand) Run() error {
if bpc.IsDetailedSummary() {
bpc.SetSummary(summary)
}
if err != nil || bpc.config.DryRun {
return err
}

buildLink, err := bpc.constructBuildInfoUiUrl(servicesManager, buildInfo.Started)
if err != nil {
return err
}
if !bpc.config.DryRun {
return utils.RemoveBuildDir(bpc.buildConfiguration.BuildName, bpc.buildConfiguration.BuildNumber, bpc.buildConfiguration.Project)
log.Info("Build info successfully deployed. Browse it in Artifactory under " + buildLink)
return utils.RemoveBuildDir(bpc.buildConfiguration.BuildName, bpc.buildConfiguration.BuildNumber, bpc.buildConfiguration.Project)
}

func (bpc *BuildPublishCommand) constructBuildInfoUiUrl(servicesManager artifactory.ArtifactoryServicesManager, buildInfoStarted string) (string, error) {
buildTime, err := time.Parse(buildinfo.TimeFormat, buildInfoStarted)
if errorutils.CheckError(err) != nil {
return "", err
}
artVersion, err := servicesManager.GetVersion()
if err != nil {
return "", err
}
artVersionSlice := strings.Split(artVersion, ".")
majorVersion, err := strconv.Atoi(artVersionSlice[0])
if errorutils.CheckError(err) != nil {
return "", err
}
return bpc.getBuildInfoUiUrl(majorVersion, buildTime), nil
}

func (bpc *BuildPublishCommand) getBuildInfoUiUrl(majorVersion int, buildTime time.Time) string {
if majorVersion <= 6 {
return fmt.Sprintf("%vartifactory/webapp/#/builds/%v/%v",
bpc.serverDetails.GetUrl(), bpc.buildConfiguration.BuildName, bpc.buildConfiguration.BuildNumber)
} else if bpc.buildConfiguration.Project != "" {
timestamp := buildTime.UnixNano() / 1000000
return fmt.Sprintf("%vui/builds/%v/%v/%v/published?buildRepo=%v-build-info&projectKey=%v",
bpc.serverDetails.GetUrl(), bpc.buildConfiguration.BuildName, bpc.buildConfiguration.BuildNumber, strconv.FormatInt(timestamp, 10), bpc.buildConfiguration.Project, bpc.buildConfiguration.Project)
}
return nil
timestamp := buildTime.UnixNano() / 1000000
return fmt.Sprintf("%vui/builds/%v/%v/%v/published?buildRepo=artifactory-build-info",
bpc.serverDetails.GetUrl(), bpc.buildConfiguration.BuildName, bpc.buildConfiguration.BuildNumber, strconv.FormatInt(timestamp, 10))
}

func (bpc *BuildPublishCommand) createBuildInfoFromPartials() (*buildinfo.BuildInfo, error) {
Expand Down
37 changes: 37 additions & 0 deletions artifactory/commands/buildinfo/publish_test.go
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package buildinfo

import (
"github.com/jfrog/jfrog-cli-core/artifactory/utils"
"github.com/jfrog/jfrog-cli-core/utils/config"
"github.com/stretchr/testify/assert"
"reflect"
"strconv"
"testing"
"time"

"github.com/jfrog/jfrog-client-go/artifactory/buildinfo"
)
Expand Down Expand Up @@ -67,3 +72,35 @@ func TestExcludePasswordsPattern(t *testing.T) {
t.Error("expected:", expected, "got:", filteredKeys)
}
}

func TestPrintBuildInfoLink(t *testing.T) {
buildTime := strconv.FormatInt(time.Now().UnixNano()/1000000, 10)
var linkTypes = []struct {
majorVersion int
buildTime time.Time
buildInfoConf utils.BuildConfiguration
serverDetails config.ServerDetails
expected string
}{
{5, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: "cli"},
config.ServerDetails{Url: "http://localhost:8081/"}, "http://localhost:8081/artifactory/webapp/#/builds/test/1"},
{6, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: "cli"},
config.ServerDetails{Url: "http://localhost:8081/"}, "http://localhost:8081/artifactory/webapp/#/builds/test/1"},
{7, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: ""},
config.ServerDetails{Url: "http://localhost:8082/"}, "http://localhost:8082/ui/builds/test/1/" + buildTime + "/published?buildRepo=artifactory-build-info"},
{7, time.Now(), utils.BuildConfiguration{BuildName: "test", BuildNumber: "1", Module: "6", Project: "cli"},
config.ServerDetails{Url: "http://localhost:8082/"}, "http://localhost:8082/ui/builds/test/1/" + buildTime + "/published?buildRepo=cli-build-info&projectKey=cli"},
}

for _, linkType := range linkTypes {
buildPubConf := &BuildPublishCommand{
&linkType.buildInfoConf,
&linkType.serverDetails,
nil,
true,
nil,
}
buildPubComService := buildPubConf.getBuildInfoUiUrl(linkType.majorVersion, linkType.buildTime)
assert.Equal(t, buildPubComService, linkType.expected)
}
}
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,6 @@ require (
gopkg.in/yaml.v2 v2.3.0
)

// replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.0.1-0.20211005084545-98198805137b
replace github.com/jfrog/jfrog-client-go => github.com/jfrog/jfrog-client-go v1.0.1-0.20220127093540-7f2be5714cdf

// replace github.com/jfrog/gocmd => github.com/jfrog/gocmd v0.3.1-0.20210623152326-422f211f4e7f
6 changes: 2 additions & 4 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,8 @@ github.com/jfrog/gocmd v0.3.1 h1:EyOot6llZaHlV9S6We6P0OrYA2pKO8Xifm3yXuUxriM=
github.com/jfrog/gocmd v0.3.1/go.mod h1:spTHT8F2u0DtGdVq3v6frnSiqaKwPdNuMQd856MCHhw=
github.com/jfrog/gofrog v1.0.6 h1:yUDxSCw8gTK6vC4PvtG0HTnEOQJSZ+O4lWGCgkev1nU=
github.com/jfrog/gofrog v1.0.6/go.mod h1:HkDzg+tMNw23UryoOv0+LB94BzYcl6MCIoz8Tmlb+s8=
github.com/jfrog/jfrog-client-go v0.25.0/go.mod h1:bjBL6Svr951HZH7JvMtzPJ9Xy5cO0OweNjkhUzxKmtw=
github.com/jfrog/jfrog-client-go v0.27.1 h1:nyIq03WubqMi0aHPVopbBooRtZzhwhR4y9O9eJcuFls=
github.com/jfrog/jfrog-client-go v0.27.1/go.mod h1:8ws+apIY2pb+sy/XAihPbjJpQ5XZ82fYmdqoRrr8QEs=
github.com/jfrog/jfrog-client-go v1.0.1-0.20220127093540-7f2be5714cdf h1:MFNrOHfDZMJ26i9INC0SScdyHd9WOld4NOnHvxlIq9k=
github.com/jfrog/jfrog-client-go v1.0.1-0.20220127093540-7f2be5714cdf/go.mod h1:8ws+apIY2pb+sy/XAihPbjJpQ5XZ82fYmdqoRrr8QEs=
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU=
Expand Down Expand Up @@ -310,7 +309,6 @@ golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8U
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97 h1:/UOmuWzQfxxo9UtlXMwuQU8CMgg1eZXqTRwkSQJWKOI=
golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
Expand Down
1 change: 1 addition & 0 deletions utils/lock/utils_unix.go
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
//go:build linux || darwin || freebsd
// +build linux darwin freebsd

package lock
Expand Down

0 comments on commit 506a2a3

Please sign in to comment.