diff --git a/.github/workflows/release-github.yaml b/.github/workflows/release-github.yaml index b7135b67f..69d1107d9 100644 --- a/.github/workflows/release-github.yaml +++ b/.github/workflows/release-github.yaml @@ -52,6 +52,8 @@ jobs: uses: goreleaser/goreleaser-action@v1 with: version: latest + commit: currentcommit + date: builddate args: release --release-notes=release-notes.md --skip-validate --debug env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.goreleaser.yaml b/.goreleaser.yaml index 0d8f3f16a..4e5fe8230 100644 --- a/.goreleaser.yaml +++ b/.goreleaser.yaml @@ -19,6 +19,8 @@ builds: ldflags: - '-extldflags "-static"' - -X opendev.org/airship/airshipctl/pkg/version.gitVersion={{ .Version }} + - -X opendev.org/airship/airshipctl/pkg/version.gitCommit={{ .Commit }} + - -X opendev.org/airship/airshipctl/pkg/version.buildDate={{ .Date }} env: - CGO_ENABLED=0 id: linux @@ -46,4 +48,4 @@ archives: files: - none* release: - draft: true \ No newline at end of file + draft: true diff --git a/Makefile b/Makefile index a0ceab25c..5f395db56 100644 --- a/Makefile +++ b/Makefile @@ -1,10 +1,16 @@ SHELL := /bin/bash GIT_VERSION ?= v0.1.0 +GIT_COMMIT ?= $(shell git rev-parse HEAD) +BUILD_DATE ?= $(shell date -u +'%Y-%m-%dT%H:%M:%SZ') GIT_MODULE ?= opendev.org/airship/airshipctl/pkg/version +LDFLAGS += -X ${GIT_MODULE}.gitVersion=${GIT_VERSION} +LDFLAGS += -X ${GIT_MODULE}.gitCommit=${GIT_COMMIT} +LDFLAGS += -X ${GIT_MODULE}.buildDate=${BUILD_DATE} + GO_FLAGS := -ldflags '-extldflags "-static"' -tags=netgo -trimpath -GO_FLAGS += -ldflags "-X ${GIT_MODULE}.gitVersion=${GIT_VERSION}" +GO_FLAGS += -ldflags '$(LDFLAGS)' # Get the currently used golang install path (in GOPATH/bin, unless GOBIN is set) ifeq (,$(shell go env GOBIN 2> /dev/null)) GOBIN = $(shell go env GOPATH 2> /dev/null)/bin diff --git a/cmd/testdata/TestVersionGoldenOutput/version.golden b/cmd/testdata/TestVersionGoldenOutput/version.golden index 21d06811c..a8d9c33da 100644 --- a/cmd/testdata/TestVersionGoldenOutput/version.golden +++ b/cmd/testdata/TestVersionGoldenOutput/version.golden @@ -1 +1 @@ -airshipctl: devel +airshipctl: version.Info{GitVersion:"devel", GitCommit:"", BuildDate:""} diff --git a/cmd/version.go b/cmd/version.go index d6820d362..156b7962b 100644 --- a/cmd/version.go +++ b/cmd/version.go @@ -41,5 +41,5 @@ func NewVersionCommand() *cobra.Command { func clientVersion() string { v := version.Get() - return v.GitVersion + return fmt.Sprintf("%#v", v) } diff --git a/pkg/version/version.go b/pkg/version/version.go index 44af23d7f..6455a9d75 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -16,6 +16,8 @@ package version var ( gitVersion = "devel" + gitCommit = "" + buildDate = "" ) // Info structure provides version data for airshipctl @@ -23,7 +25,9 @@ var ( // provided from Makefile during building airshipctl // or defined in a local var for development purposes type Info struct { - GitVersion string `json:"gitVersion"` + GitVersion string `json:"gitVersion,omitempty"` + GitCommit string `json:"gitCommit,omitempty"` + BuildDate string `json:"buildDate,omitempty"` } // Get function shows airshipctl version @@ -31,5 +35,7 @@ type Info struct { func Get() Info { return Info{ GitVersion: gitVersion, + GitCommit: gitCommit, + BuildDate: buildDate, } }