Pass commit date and hash to -ldflags separately.

This commit is contained in:
Bas Couwenberg
2024-01-26 13:23:15 +01:00
committed by Dan Christian Bogos
parent 556060817c
commit 0785141218
6 changed files with 90 additions and 124 deletions

View File

@@ -1,24 +1,38 @@
#! /usr/bin/env sh #! /usr/bin/env sh
echo "Building CGRateS ..." 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" ] GIT_TAG_LOG="$(git tag -l --points-at "${GIT_COMMIT}")"
then
GIT_LAST_LOG="" if [ -n "${GIT_TAG_LOG}" ]; then
GIT_COMMIT_DATE=""
GIT_COMMIT_HASH=""
fi 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=$? 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=$? 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=$? 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=$? 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=$? ct=$?
# shellcheck disable=SC2317
exit $cr || $cl || $cc || $cm || $ct exit $cr || $cl || $cc || $cm || $ct

View File

@@ -105,11 +105,12 @@ func TestCoreServiceStatus(t *testing.T) {
if !reflect.DeepEqual(expected[utils.NodeID], reply[utils.NodeID]) { 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])) 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 { if err := cores.V1Status(context.Background(), args, &reply); err != nil {
t.Error(err) t.Error(err)
} }
utils.GitLastLog = "" utils.GitCommitDate = ""
utils.GitCommitHash = ""
} }

View File

@@ -1,24 +1,53 @@
#! /usr/bin/env sh #! /usr/bin/env sh
echo "Static building CGRateS..." 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" ] GIT_TAG_LOG="$(git tag -l --points-at "${GIT_COMMIT}")"
then
GIT_LAST_LOG="" if [ -n "${GIT_TAG_LOG}" ]; then
GIT_COMMIT_DATE=""
GIT_COMMIT_HASH=""
fi 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=$? 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=$? 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=$? 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=$? 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=$? ct=$?
# shellcheck disable=SC2317
exit $cr || $cl || $cc || $cm || $ct exit $cr || $cl || $cc || $cm || $ct

View File

@@ -28,7 +28,8 @@ var (
PreRated, CostSource, CostDetails, ExtraInfo, OrderID}) PreRated, CostSource, CostDetails, ExtraInfo, OrderID})
PostPaidRatedSlice = []string{MetaPostpaid, MetaRated} 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, extraDBPartition = NewStringSet([]string{CacheDispatchers,
CacheDispatcherRoutes, CacheDispatcherLoads, CacheDiameterMessages, CacheRadiusPackets, CacheRPCResponses, CacheClosedSessions, CacheDispatcherRoutes, CacheDispatcherLoads, CacheDiameterMessages, CacheRadiusPackets, CacheRPCResponses, CacheClosedSessions,

View File

@@ -755,41 +755,23 @@ func (slc Int64Slice) Less(i, j int) bool {
func GetCGRVersion() (vers string, err error) { func GetCGRVersion() (vers string, err error) {
vers = fmt.Sprintf("%s@%s", CGRateS, Version) vers = fmt.Sprintf("%s@%s", CGRateS, Version)
if GitLastLog == "" { if GitCommitDate == "" || GitCommitHash == "" {
return vers, nil return vers, nil
} }
rdr := bytes.NewBufferString(GitLastLog)
var commitHash string var commitHash string
var commitDate time.Time var commitDate time.Time
for i := 0; i < 5; i++ { // read a maximum of 5 lines var matched bool
var ln string commitDate, err = time.Parse("2006-01-02T15:04:05-07:00", strings.TrimSpace(GitCommitDate))
ln, err = rdr.ReadString('\n') if err != nil {
if err != nil { return vers, fmt.Errorf("Building version - error: <%s> compiling commit date", err.Error())
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
}
} }
if commitHash == "" || commitDate.IsZero() { matched, err = regexp.MatchString("^[0-9a-f]{12,}$", GitCommitHash)
return vers, fmt.Errorf("Cannot find commitHash or commitDate information") 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 //CGRateS@v0.11.0~dev-20200110075344-7572e7b11e00
return fmt.Sprintf("%s@%s-%s-%s", CGRateS, Version, commitDate.UTC().Format("20060102150405"), commitHash[:12]), nil return fmt.Sprintf("%s@%s-%s-%s", CGRateS, Version, commitDate.UTC().Format("20060102150405"), commitHash[:12]), nil
} }

View File

@@ -1303,14 +1303,8 @@ func TestLess(t *testing.T) {
} }
func TestGetCGRVersion(t *testing.T) { func TestGetCGRVersion(t *testing.T) {
GitLastLog = `commit 73014daa0c1d7edcb532d5fe600b8a20d588cdf8 GitCommitDate = "2016-12-30T19:48:09+01:00"
Author: DanB <danb@cgrates.org> GitCommitHash = "73014daa0c1d7edcb532d5fe600b8a20d588cdf8"
AuthorDate: Fri Dec 30 19:48:09 2016 +0100
Commit: DanB <danb@cgrates.org>
CommitDate: Fri Dec 30 19:48:09 2016 +0100
Fixes for db driver to avoid returning new values in case of errors
`
expVers := "CGRateS@" + Version expVers := "CGRateS@" + Version
eVers := expVers + "-20161230184809-73014daa0c1d" eVers := expVers + "-20161230184809-73014daa0c1d"
if vers, err := GetCGRVersion(); err != nil { if vers, err := GetCGRVersion(); err != nil {
@@ -1318,82 +1312,27 @@ CommitDate: Fri Dec 30 19:48:09 2016 +0100
} else if vers != eVers { } else if vers != eVers {
t.Errorf("Expecting: <%s>, received: <%s>", eVers, vers) t.Errorf("Expecting: <%s>, received: <%s>", eVers, vers)
} }
GitLastLog = "" GitCommitDate = ""
GitCommitHash = ""
if vers, err := GetCGRVersion(); err != nil { if vers, err := GetCGRVersion(); err != nil {
t.Error(err) t.Error(err)
} else if vers != expVers { } else if vers != expVers {
t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers)
} }
GitLastLog = "\n" GitCommitDate = "wrong format"
if vers, err := GetCGRVersion(); err == nil || err.Error() != "Building version - error: <EOF> reading line from file" { GitCommitHash = "73014daa0c1d7edcb532d5fe600b8a20d588cdf8"
if vers, err := GetCGRVersion(); err == nil || err.Error() != `Building version - error: <parsing time "wrong format" as "2006-01-02T15:04:05-07:00": cannot parse "wrong format" as "2006"> compiling commit date` {
t.Error(err) t.Error(err)
} else if vers != expVers { } else if vers != expVers {
t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers)
} }
GitLastLog = `commit . . . GitCommitDate = "2016-12-30T19:48:09+01:00"
` GitCommitHash = "73014DAA0C1D7EDCB532D5FE600B8A20D588CDF8"
if vers, err := GetCGRVersion(); err == nil || err.Error() != "Building version - cannot extract commit hash" { if vers, err := GetCGRVersion(); err == nil || err.Error() != `Building version - error: <Regex not matched> compiling commit hash` {
t.Error(err) t.Error(err)
} else if vers != expVers { } else if vers != expVers {
t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers) 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: <parsing time "wrong format" as "Mon Jan 2 15:04:05 2006 -0700": cannot parse "wrong format" as "Mon"> compiling commit date` {
t.Error(err)
} else if vers != expVers {
t.Errorf("Expecting: <%s>, received: <%s>", expVers, vers)
}
GitLastLog = `ommit 73014daa0c1d7edcb532d5fe600b8a20d588cdf8
Author: DanB <danb@cgrates.org>
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 <nickolas.filip@itsyscom.com>
AuthorDate: Wed Feb 2 16:54:59 2022 +0200
Commit: nickolasdaniel <nickolas.filip@itsyscom.com>
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 <nickolas.filip@itsyscom.com>
AuthorDate: Thu Jun 5 12:14:49 2026 +0800
Commit: nickolasdaniel <nickolas.filip@itsyscom.com>
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) { func TestNewTenantID(t *testing.T) {