From ef1696d5e188df5c100a03201d3810d273d86c71 Mon Sep 17 00:00:00 2001 From: Bas Couwenberg Date: Fri, 26 Jan 2024 13:23:15 +0100 Subject: [PATCH] Pass commit date and hash to -ldflags separately. --- build.sh | 34 +++++++++++++++++-------- data/docker/scratch/build.sh | 49 ++++++++++++++++++++++++++++-------- utils/consts.go | 4 ++- utils/coreutils.go | 40 ++++++++--------------------- utils/coreutils_test.go | 47 ++++++++-------------------------- 5 files changed, 87 insertions(+), 87 deletions(-) diff --git a/build.sh b/build.sh index 58bf883df..61207aece 100755 --- a/build.sh +++ b/build.sh @@ -1,24 +1,38 @@ #!/bin/bash echo "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 -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/data/docker/scratch/build.sh b/data/docker/scratch/build.sh index 483ddfa36..67d80c459 100755 --- a/data/docker/scratch/build.sh +++ b/data/docker/scratch/build.sh @@ -1,24 +1,53 @@ #!/bin/bash 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 b8519f4b8..5b2f06771 100644 --- a/utils/consts.go +++ b/utils/consts.go @@ -34,7 +34,9 @@ var ( AttrInlineTypes = NewStringSet([]string{META_CONSTANT, MetaVariable, META_COMPOSED, META_USAGE_DIFFERENCE, MetaSum, MetaValueExponent}) - 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 + PosterTransportContentTypes = map[string]string{ MetaHTTPjsonCDR: CONTENT_JSON, MetaHTTPjsonMap: CONTENT_JSON, diff --git a/utils/coreutils.go b/utils/coreutils.go index b3875bbd9..c87b18a75 100644 --- a/utils/coreutils.go +++ b/utils/coreutils.go @@ -707,41 +707,23 @@ func CapitalizedMessage(errMessage string) (capStr string) { 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, "Date:") { - 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.10.1~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 4e03213c4..401d849aa 100644 --- a/utils/coreutils_test.go +++ b/utils/coreutils_test.go @@ -1169,12 +1169,8 @@ func TestCapitalizedMessage(t *testing.T) { } func TestGetCGRVersion(t *testing.T) { - GitLastLog = `commit 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 -` + GitCommitDate = "2016-12-30T19:48:09+01:00" + GitCommitHash = "73014daa0c1d7edcb532d5fe600b8a20d588cdf8" expVers := "CGRateS@" + VERSION eVers := expVers + "-20161230184809-73014daa0c1d" if vers, err := GetCGRVersion(); err != nil { @@ -1182,46 +1178,23 @@ Date: 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" { - t.Error(err) - } else if vers != expVers { - t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) - } - GitLastLog = `Date: : : -` - 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 = `Date: 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" { + 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)