From a1dca2117ddf6346b742da85b9c4b2218449d64e Mon Sep 17 00:00:00 2001 From: Leonard Gram Date: Mon, 5 Nov 2018 15:05:12 +0100 Subject: [PATCH] build: use build workflow id instead of build number. (#13965) * build: use build workflow id instead of build number. The workflow id is unique across the whole workflow while the build number is unique to every job in the workflow. This change means that jobs that build artifacts for the same commit but in different jobs will now have the same id. * build: fixes pkgver generation. --- build.go | 28 ++++++++++++++++++++-------- scripts/build/build-all.sh | 4 ++-- scripts/build/build.sh | 4 ++-- scripts/build/deploy.sh | 14 -------------- 4 files changed, 24 insertions(+), 26 deletions(-) delete mode 100755 scripts/build/deploy.sh diff --git a/build.go b/build.go index b136754efbc..a2a1fb825d9 100644 --- a/build.go +++ b/build.go @@ -41,8 +41,8 @@ var ( race bool phjsToRelease string workingDir string - includeBuildNumber bool = true - buildNumber int = 0 + includeBuildId bool = true + buildId string = "0" binaries []string = []string{"grafana-server", "grafana-cli"} isDev bool = false enterprise bool = false @@ -54,6 +54,8 @@ func main() { ensureGoPath() + var buildIdRaw string + flag.StringVar(&goarch, "goarch", runtime.GOARCH, "GOARCH") flag.StringVar(&goos, "goos", runtime.GOOS, "GOOS") flag.StringVar(&gocc, "cc", "", "CC") @@ -61,12 +63,14 @@ func main() { flag.StringVar(&pkgArch, "pkg-arch", "", "PKG ARCH") flag.StringVar(&phjsToRelease, "phjs", "", "PhantomJS binary") flag.BoolVar(&race, "race", race, "Use race detector") - flag.BoolVar(&includeBuildNumber, "includeBuildNumber", includeBuildNumber, "IncludeBuildNumber in package name") + flag.BoolVar(&includeBuildId, "includeBuildId", includeBuildId, "IncludeBuildId in package name") flag.BoolVar(&enterprise, "enterprise", enterprise, "Build enterprise version of Grafana") - flag.IntVar(&buildNumber, "buildNumber", 0, "Build number from CI system") + flag.StringVar(&buildIdRaw, "buildId", "0", "Build ID from CI system") flag.BoolVar(&isDev, "dev", isDev, "optimal for development, skips certain steps") flag.Parse() + buildId = shortenBuildId(buildIdRaw) + readVersionFromPackageJson() if pkgArch == "" { @@ -197,9 +201,9 @@ func readVersionFromPackageJson() { } // add timestamp to iteration - if includeBuildNumber { - if buildNumber != 0 { - linuxPackageIteration = fmt.Sprintf("%d%s", buildNumber, linuxPackageIteration) + if includeBuildId { + if buildId != "0" { + linuxPackageIteration = fmt.Sprintf("%s%s", buildId, linuxPackageIteration) } else { linuxPackageIteration = fmt.Sprintf("%d%s", time.Now().Unix(), linuxPackageIteration) } @@ -392,7 +396,7 @@ func grunt(params ...string) { func gruntBuildArg(task string) []string { args := []string{task} - if includeBuildNumber { + if includeBuildId { args = append(args, fmt.Sprintf("--pkgVer=%v-%v", linuxPackageVersion, linuxPackageIteration)) } else { args = append(args, fmt.Sprintf("--pkgVer=%v", version)) @@ -632,3 +636,11 @@ func shaFile(file string) error { return out.Close() } + +func shortenBuildId(buildId string) string { + buildId = strings.Replace(buildId, "-", "", -1) + if (len(buildId) < 9) { + return buildId + } + return buildId[0:8] +} diff --git a/scripts/build/build-all.sh b/scripts/build/build-all.sh index f194109ec0d..3e7058fa494 100755 --- a/scripts/build/build-all.sh +++ b/scripts/build/build-all.sh @@ -22,10 +22,10 @@ echo "current dir: $(pwd)" if [ "$CIRCLE_TAG" != "" ]; then echo "Building releases from tag $CIRCLE_TAG" - OPT="-includeBuildNumber=false ${EXTRA_OPTS}" + OPT="-includeBuildId=false ${EXTRA_OPTS}" else echo "Building incremental build for $CIRCLE_BRANCH" - OPT="-buildNumber=${CIRCLE_BUILD_NUM} ${EXTRA_OPTS}" + OPT="-buildId=${CIRCLE_WORKFLOW_ID} ${EXTRA_OPTS}" fi echo "Build arguments: $OPT" diff --git a/scripts/build/build.sh b/scripts/build/build.sh index 2cf9f5a8a21..8362942c6cd 100755 --- a/scripts/build/build.sh +++ b/scripts/build/build.sh @@ -18,10 +18,10 @@ echo "current dir: $(pwd)" if [ "$CIRCLE_TAG" != "" ]; then echo "Building releases from tag $CIRCLE_TAG" - OPT="-includeBuildNumber=false ${EXTRA_OPTS}" + OPT="-includeBuildId=false ${EXTRA_OPTS}" else echo "Building incremental build for $CIRCLE_BRANCH" - OPT="-buildNumber=${CIRCLE_BUILD_NUM} ${EXTRA_OPTS}" + OPT="-buildId=${CIRCLE_WORKFLOW_ID} ${EXTRA_OPTS}" fi echo "Build arguments: $OPT" diff --git a/scripts/build/deploy.sh b/scripts/build/deploy.sh deleted file mode 100755 index 49b2a9e3a7c..00000000000 --- a/scripts/build/deploy.sh +++ /dev/null @@ -1,14 +0,0 @@ -#!/bin/bash - -mkdir -p dist - -echo "Circle branch: ${CIRCLE_BRANCH}" -echo "Circle tag: ${CIRCLE_TAG}" -docker run -i -t --name gfbuild \ - -v $(pwd):/go/src/github.com/grafana/grafana \ - -e "CIRCLE_BRANCH=${CIRCLE_BRANCH}" \ - -e "CIRCLE_TAG=${CIRCLE_TAG}" \ - -e "CIRCLE_BUILD_NUM=${CIRCLE_BUILD_NUM}" \ - grafana/buildcontainer - -sudo chown -R ${USER:=$(/usr/bin/id -run)}:$USER dist