diff --git a/build.sh b/build.sh index 658ff92f7..451797ed2 100755 --- a/build.sh +++ b/build.sh @@ -1,24 +1,38 @@ #! /usr/bin/env sh echo "Building CGRateS ..." -GIT_LAST_LOG=$(git log -1 --format=fuller | tr -d "'") +GIT_COMMIT="HEAD" -GIT_TAG_LOG=$(git tag -l --points-at HEAD) +GIT_COMMIT_DATE="$(git log -n1 --format=format:%cI "${GIT_COMMIT}")" +GIT_COMMIT_HASH="$(git log -n1 --format=format:%H "${GIT_COMMIT}")" -if [ ! -z "$GIT_TAG_LOG" ] -then - GIT_LAST_LOG="" +GIT_TAG_LOG="$(git tag -l --points-at "${GIT_COMMIT}")" + +if [ -n "${GIT_TAG_LOG}" ]; then + GIT_COMMIT_DATE="" + GIT_COMMIT_HASH="" fi -go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-engine +go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-engine cr=$? -go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-loader +go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-loader cl=$? -go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-console +go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-console cc=$? -go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-migrator +go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-migrator cm=$? -go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-tester +go install -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-tester ct=$? +# shellcheck disable=SC2317 exit $cr || $cl || $cc || $cm || $ct diff --git a/cores/core_test.go b/cores/core_test.go index 99bcbbb4b..91bb1c9ec 100644 --- a/cores/core_test.go +++ b/cores/core_test.go @@ -105,11 +105,12 @@ func TestCoreServiceStatus(t *testing.T) { if !reflect.DeepEqual(expected[utils.NodeID], reply[utils.NodeID]) { t.Errorf("Expected %+v, received %+v", utils.ToJSON(expected[utils.NodeID]), utils.ToJSON(reply[utils.NodeID])) } - utils.GitLastLog = `Date: wrong format -` + utils.GitCommitDate = "wrong format" + utils.GitCommitHash = "73014DAA0C1D7EDCB532D5FE600B8A20D588CDF8" if err := cores.V1Status(context.Background(), args, &reply); err != nil { t.Error(err) } - utils.GitLastLog = "" + utils.GitCommitDate = "" + utils.GitCommitHash = "" } diff --git a/data/docker/scratch/build.sh b/data/docker/scratch/build.sh index c9c1b1743..c9578b1ae 100755 --- a/data/docker/scratch/build.sh +++ b/data/docker/scratch/build.sh @@ -1,24 +1,53 @@ #! /usr/bin/env sh echo "Static building CGRateS..." -GIT_LAST_LOG=$(git log -1 | tr -d "'") +GIT_COMMIT="HEAD" -GIT_TAG_LOG=$(git tag -l --points-at HEAD) +GIT_COMMIT_DATE="$(git log -n1 --format=format:%cI "${GIT_COMMIT}")" +GIT_COMMIT_HASH="$(git log -n1 --format=format:%H "${GIT_COMMIT}")" -if [ ! -z "$GIT_TAG_LOG" ] -then - GIT_LAST_LOG="" +GIT_TAG_LOG="$(git tag -l --points-at "${GIT_COMMIT}")" + +if [ -n "${GIT_TAG_LOG}" ]; then + GIT_COMMIT_DATE="" + GIT_COMMIT_HASH="" fi -GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-engine -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-engine +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-engine -a \ + -ldflags '-extldflags "-f no-PIC -static"' \ + -tags 'osusergo netgo static_build' \ + -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-engine cr=$? -GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-loader -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-loader +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-loader -a \ + -ldflags '-extldflags "-f no-PIC -static"' \ + -tags 'osusergo netgo static_build' \ + -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-loader cl=$? -GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-console -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-console +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-console -a \ + -ldflags '-extldflags "-f no-PIC -static"' \ + -tags 'osusergo netgo static_build' \ + -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-console cc=$? -GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-migrator -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-migrator +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-migrator -a \ + -ldflags '-extldflags "-f no-PIC -static"' \ + -tags 'osusergo netgo static_build' \ + -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-migrator cm=$? -GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-tester -a -ldflags '-extldflags "-f no-PIC -static"' -tags 'osusergo netgo static_build' -ldflags "-X 'github.com/cgrates/cgrates/utils.GitLastLog=$GIT_LAST_LOG'" github.com/cgrates/cgrates/cmd/cgr-tester +GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o cgr-tester -a \ + -ldflags '-extldflags "-f no-PIC -static"' \ + -tags 'osusergo netgo static_build' \ + -ldflags "-X 'github.com/cgrates/cgrates/utils.GitCommitDate=$GIT_COMMIT_DATE' \ + -X 'github.com/cgrates/cgrates/utils.GitCommitHash=$GIT_COMMIT_HASH'" \ + github.com/cgrates/cgrates/cmd/cgr-tester ct=$? +# shellcheck disable=SC2317 exit $cr || $cl || $cc || $cm || $ct diff --git a/utils/consts.go b/utils/consts.go index 407d72019..eacde3171 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -28,7 +28,8 @@ var ( PreRated, CostSource, CostDetails, ExtraInfo, OrderID}) PostPaidRatedSlice = []string{MetaPostpaid, MetaRated} - GitLastLog string // If set, it will be processed as part of versioning + GitCommitDate string // If set, it will be processed as part of versioning + GitCommitHash string // If set, it will be processed as part of versioning extraDBPartition = NewStringSet([]string{CacheDispatchers, CacheDispatcherRoutes, CacheDispatcherLoads, CacheDiameterMessages, CacheRadiusPackets, CacheRPCResponses, CacheClosedSessions, diff --git a/utils/coreutils.go b/utils/coreutils.go index ead20dff9..dc1dd975e 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -755,41 +755,23 @@ func (slc Int64Slice) Less(i, j int) bool { func GetCGRVersion() (vers string, err error) { vers = fmt.Sprintf("%s@%s", CGRateS, Version) - if GitLastLog == "" { + if GitCommitDate == "" || GitCommitHash == "" { return vers, nil } - rdr := bytes.NewBufferString(GitLastLog) var commitHash string var commitDate time.Time - for i := 0; i < 5; i++ { // read a maximum of 5 lines - var ln string - ln, err = rdr.ReadString('\n') - if err != nil { - return vers, fmt.Errorf("Building version - error: <%s> reading line from file", err.Error()) //or errorsNew() - } - if strings.HasPrefix(ln, "commit ") { - commitSplt := strings.Split(ln, " ") - if len(commitSplt) != 2 { - return vers, fmt.Errorf("Building version - cannot extract commit hash") - } - commitHash = commitSplt[1] - continue - } - if strings.HasPrefix(ln, "CommitDate:") { - dateSplt := strings.Split(ln, ": ") - if len(dateSplt) != 2 { - return vers, fmt.Errorf("Building version - cannot split commit date") - } - commitDate, err = time.Parse("Mon Jan 2 15:04:05 2006 -0700", strings.TrimSpace(dateSplt[1])) - if err != nil { - return vers, fmt.Errorf("Building version - error: <%s> compiling commit date", err.Error()) - } - break - } + var matched bool + commitDate, err = time.Parse("2006-01-02T15:04:05-07:00", strings.TrimSpace(GitCommitDate)) + if err != nil { + return vers, fmt.Errorf("Building version - error: <%s> compiling commit date", err.Error()) } - if commitHash == "" || commitDate.IsZero() { - return vers, fmt.Errorf("Cannot find commitHash or commitDate information") + matched, err = regexp.MatchString("^[0-9a-f]{12,}$", GitCommitHash) + if err != nil { + return vers, fmt.Errorf("Building version - error: <%s> compiling commit hash", err.Error()) + } else if !matched { + return vers, fmt.Errorf("Building version - error: <%s> compiling commit hash", "Regex not matched") } + commitHash = GitCommitHash //CGRateS@v0.11.0~dev-20200110075344-7572e7b11e00 return fmt.Sprintf("%s@%s-%s-%s", CGRateS, Version, commitDate.UTC().Format("20060102150405"), commitHash[:12]), nil } diff --git a/utils/coreutils_test.go b/utils/coreutils_test.go index d5f541b66..97a9ed3f8 100644 --- a/utils/coreutils_test.go +++ b/utils/coreutils_test.go @@ -1303,14 +1303,8 @@ func TestLess(t *testing.T) { } func TestGetCGRVersion(t *testing.T) { - GitLastLog = `commit 73014daa0c1d7edcb532d5fe600b8a20d588cdf8 -Author: DanB -AuthorDate: Fri Dec 30 19:48:09 2016 +0100 -Commit: DanB -CommitDate: Fri Dec 30 19:48:09 2016 +0100 - - Fixes for db driver to avoid returning new values in case of errors -` + GitCommitDate = "2016-12-30T19:48:09+01:00" + GitCommitHash = "73014daa0c1d7edcb532d5fe600b8a20d588cdf8" expVers := "CGRateS@" + Version eVers := expVers + "-20161230184809-73014daa0c1d" if vers, err := GetCGRVersion(); err != nil { @@ -1318,82 +1312,27 @@ CommitDate: Fri Dec 30 19:48:09 2016 +0100 } else if vers != eVers { t.Errorf("Expecting: <%s>, received: <%s>", eVers, vers) } - GitLastLog = "" + GitCommitDate = "" + GitCommitHash = "" if vers, err := GetCGRVersion(); err != nil { t.Error(err) } else if vers != expVers { t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) } - GitLastLog = "\n" - if vers, err := GetCGRVersion(); err == nil || err.Error() != "Building version - error: reading line from file" { + GitCommitDate = "wrong format" + GitCommitHash = "73014daa0c1d7edcb532d5fe600b8a20d588cdf8" + if vers, err := GetCGRVersion(); err == nil || err.Error() != `Building version - error: compiling commit date` { t.Error(err) } else if vers != expVers { t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) } - GitLastLog = `commit . . . -` - if vers, err := GetCGRVersion(); err == nil || err.Error() != "Building version - cannot extract commit hash" { + GitCommitDate = "2016-12-30T19:48:09+01:00" + GitCommitHash = "73014DAA0C1D7EDCB532D5FE600B8A20D588CDF8" + if vers, err := GetCGRVersion(); err == nil || err.Error() != `Building version - error: compiling commit hash` { t.Error(err) } else if vers != expVers { t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) } - GitLastLog = `CommitDate: : : -` - if vers, err := GetCGRVersion(); err == nil || err.Error() != "Building version - cannot split commit date" { - t.Error(err) - } else if vers != expVers { - t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) - } - GitLastLog = `CommitDate: wrong format -` - if vers, err := GetCGRVersion(); err == nil || err.Error() != `Building version - error: compiling commit date` { - t.Error(err) - } else if vers != expVers { - t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) - } - GitLastLog = `ommit 73014daa0c1d7edcb532d5fe600b8a20d588cdf8 -Author: DanB -Date: Fri Dec 30 19:48:09 2016 +0100 - - Fixes for db driver to avoid returning new values in case of errors -` - if vers, err := GetCGRVersion(); err == nil || err.Error() != "Cannot find commitHash or commitDate information" { - t.Error(err) - } else if vers != expVers { - t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) - } - - GitLastLog = `commit c34d5753cf5ae15a3b7ae9bea30a4900fb8191a0 -Author: nickolasdaniel -AuthorDate: Wed Feb 2 16:54:59 2022 +0200 -Commit: nickolasdaniel -CommitDate: Wed Feb 2 16:54:59 2022 +0200 - - Changed the build script and GetCGRVersion() to get the CommitDate instead of AuthorDate -` - expVers = "CGRateS@" + Version - eVers = expVers + "-20220202145459-c34d5753cf5a" - if vers, err := GetCGRVersion(); err != nil { - t.Error(err) - } else if vers != eVers { - t.Errorf("Expecting: <%s>, received: <%s>", eVers, vers) - } - - GitLastLog = `commit c34d5753cf5ae15a3b7ae9bea30a4900fb8191a0 -Author: nickolasdaniel -AuthorDate: Thu Jun 5 12:14:49 2026 +0800 -Commit: nickolasdaniel -CommitDate: Wed Feb 2 16:54:59 2022 +0200 - - Changed the build script and GetCGRVersion() to get the CommitDate instead of AuthorDate -` - expVers = "CGRateS@" + Version - eVers = expVers + "-20220202145459-c34d5753cf5a" - if vers, err := GetCGRVersion(); err != nil { - t.Error(err) - } else if vers != eVers { - t.Errorf("Expecting: <%s>, received: <%s>", eVers, vers) - } } func TestNewTenantID(t *testing.T) {