From 36e034551f4d0fe9fa22886d2a0b972d2ec05a84 Mon Sep 17 00:00:00 2001 From: Adam Reese Date: Wed, 2 May 2018 15:26:26 -0700 Subject: [PATCH] ref(*): rebuild build version object --- Makefile | 6 ++--- cmd/helm/package.go | 2 +- cmd/helm/template.go | 2 +- cmd/helm/version.go | 10 ++++---- cmd/helm/version_test.go | 6 ++--- pkg/chartutil/capabilities.go | 4 ++-- pkg/chartutil/values_test.go | 4 ++-- pkg/lint/rules/template.go | 2 +- pkg/tiller/release_server.go | 2 +- pkg/version/version.go | 44 ++++++++++++++++++----------------- pkg/version/version_test.go | 24 +++++++++---------- 11 files changed, 54 insertions(+), 52 deletions(-) diff --git a/Makefile b/Makefile index 479a64ffd..32bef5c6d 100644 --- a/Makefile +++ b/Makefile @@ -31,10 +31,10 @@ endif # Clear the "unreleased" string in BuildMetadata ifneq ($(GIT_TAG),) - LDFLAGS += -X k8s.io/helm/pkg/version.BuildMetadata= + LDFLAGS += -X k8s.io/helm/pkg/version.metadata= endif -LDFLAGS += -X k8s.io/helm/pkg/version.GitCommit=${GIT_COMMIT} -LDFLAGS += -X k8s.io/helm/pkg/version.GitTreeState=${GIT_DIRTY} +LDFLAGS += -X k8s.io/helm/pkg/version.gitCommit=${GIT_COMMIT} +LDFLAGS += -X k8s.io/helm/pkg/version.gitTreeState=${GIT_DIRTY} .PHONY: all all: build diff --git a/cmd/helm/package.go b/cmd/helm/package.go index f9fff79fe..75c60e9be 100644 --- a/cmd/helm/package.go +++ b/cmd/helm/package.go @@ -205,7 +205,7 @@ func (p *packageCmd) run() error { } func setVersion(ch *chart.Chart, ver string) error { - // Verify that version is a SemVer, and error out if it is not. + // Verify that version is a Version, and error out if it is not. if _, err := semver.NewVersion(ver); err != nil { return err } diff --git a/cmd/helm/template.go b/cmd/helm/template.go index d89061235..1377d27cd 100644 --- a/cmd/helm/template.go +++ b/cmd/helm/template.go @@ -191,7 +191,7 @@ func (t *templateCmd) run(cmd *cobra.Command, args []string) error { caps := &chartutil.Capabilities{ APIVersions: chartutil.DefaultVersionSet, KubeVersion: chartutil.DefaultKubeVersion, - HelmVersion: tversion.GetVersionProto(), + HelmVersion: tversion.GetBuildInfo(), } // kubernetes version diff --git a/cmd/helm/version.go b/cmd/helm/version.go index 0c8ffe565..01d6a03b3 100644 --- a/cmd/helm/version.go +++ b/cmd/helm/version.go @@ -31,9 +31,9 @@ Show the version for Helm. This will print a representation the version of Helm. The output will look something like this: -Client: &version.Version{SemVer:"v2.0.0", GitCommit:"ff52399e51bb880526e9cd0ed8386f6433b74da1", GitTreeState:"clean"} +Client: &version.BuildInfo{Version:"v2.0.0", GitCommit:"ff52399e51bb880526e9cd0ed8386f6433b74da1", GitTreeState:"clean"} -- SemVer is the semantic version of the release. +- Version is the semantic version of the release. - GitCommit is the SHA for the commit that this version was built from. - GitTreeState is "clean" if there are no local code changes when this binary was built, and "dirty" if the binary was built from locally modified code. @@ -67,7 +67,7 @@ func (v *versionCmd) run() error { // Store map data for template rendering data := map[string]interface{}{} - cv := version.GetVersionProto() + cv := version.GetBuildInfo() if v.template != "" { data["Client"] = cv return tpl(v.template, data, v.out) @@ -76,9 +76,9 @@ func (v *versionCmd) run() error { return nil } -func formatVersion(v *version.Version, short bool) string { +func formatVersion(v *version.BuildInfo, short bool) string { if short { - return fmt.Sprintf("%s+g%s", v.SemVer, v.GitCommit[:7]) + return fmt.Sprintf("%s+g%s", v.Version, v.GitCommit[:7]) } return fmt.Sprintf("%#v", v) } diff --git a/cmd/helm/version_test.go b/cmd/helm/version_test.go index 9da1a9753..b5b91dec7 100644 --- a/cmd/helm/version_test.go +++ b/cmd/helm/version_test.go @@ -24,8 +24,8 @@ import ( ) func TestVersion(t *testing.T) { - lver := regexp.QuoteMeta(version.GetVersionProto().SemVer) - clientVersion := fmt.Sprintf("Client: &version\\.Version{SemVer:\"%s\", GitCommit:\"\", GitTreeState:\"\"}\n", lver) + lver := regexp.QuoteMeta(version.GetVersion()) + clientVersion := fmt.Sprintf("Client: &version\\.BuildInfo{Version:\"%s\", GitCommit:\"\", GitTreeState:\"\"}\n", lver) tests := []releaseCase{ { @@ -35,7 +35,7 @@ func TestVersion(t *testing.T) { }, { name: "template", - cmd: "version --template='{{.Client.SemVer}}'", + cmd: "version --template='{{.Client.Version}}'", matches: lver, }, } diff --git a/pkg/chartutil/capabilities.go b/pkg/chartutil/capabilities.go index a0e68df94..d208df005 100644 --- a/pkg/chartutil/capabilities.go +++ b/pkg/chartutil/capabilities.go @@ -47,8 +47,8 @@ type Capabilities struct { KubeVersion *version.Info // HelmVersion is the Helm version // - // This always comes from pkg/version.GetVersionProto(). - HelmVersion *tversion.Version + // This always comes from pkg/version.BuildInfo(). + HelmVersion *tversion.BuildInfo } // VersionSet is a set of Kubernetes API versions. diff --git a/pkg/chartutil/values_test.go b/pkg/chartutil/values_test.go index 170f01619..f72c9534b 100644 --- a/pkg/chartutil/values_test.go +++ b/pkg/chartutil/values_test.go @@ -112,7 +112,7 @@ where: caps := &Capabilities{ APIVersions: DefaultVersionSet, - HelmVersion: version.GetVersionProto(), + HelmVersion: version.GetBuildInfo(), KubeVersion: &kversion.Info{Major: "1"}, } @@ -144,7 +144,7 @@ where: if !res["Capabilities"].(*Capabilities).APIVersions.Has("v1") { t.Error("Expected Capabilities to have v1 as an API") } - if res["Capabilities"].(*Capabilities).HelmVersion.SemVer == "" { + if res["Capabilities"].(*Capabilities).HelmVersion.Version == "" { t.Error("Expected Capabilities to have a Tiller version") } if res["Capabilities"].(*Capabilities).KubeVersion.Major != "1" { diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index 35bceaf25..e4d640cd0 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -56,7 +56,7 @@ func Templates(linter *support.Linter, values []byte, namespace string, strict b caps := &chartutil.Capabilities{ APIVersions: chartutil.DefaultVersionSet, KubeVersion: chartutil.DefaultKubeVersion, - HelmVersion: tversion.GetVersionProto(), + HelmVersion: tversion.GetBuildInfo(), } cvals, err := chartutil.CoalesceValues(chart, values) if err != nil { diff --git a/pkg/tiller/release_server.go b/pkg/tiller/release_server.go index 5342c1a0e..0cb644e48 100644 --- a/pkg/tiller/release_server.go +++ b/pkg/tiller/release_server.go @@ -232,7 +232,7 @@ func capabilities(disc discovery.DiscoveryInterface) (*chartutil.Capabilities, e return &chartutil.Capabilities{ APIVersions: vs, KubeVersion: sv, - HelmVersion: version.GetVersionProto(), + HelmVersion: version.GetBuildInfo(), }, nil } diff --git a/pkg/version/version.go b/pkg/version/version.go index 255ca22cd..6a06d5890 100644 --- a/pkg/version/version.go +++ b/pkg/version/version.go @@ -17,43 +17,45 @@ limitations under the License. package version // import "k8s.io/helm/pkg/version" var ( - // Version is the current version of the Helm. + // version is the current version of the Helm. // Update this whenever making a new release. // The version is of the format Major.Minor.Patch[-Prerelease][+BuildMetadata] // // Increment major number for new feature additions and behavioral changes. // Increment minor number for bug fixes and performance enhancements. // Increment patch number for critical fixes to existing releases. - version = "v2.8" - - // BuildMetadata is extra build time data - BuildMetadata = "unreleased" - // GitCommit is the git sha1 - GitCommit = "" - // GitTreeState is the state of the git tree - GitTreeState = "" + version = "v3.0" + + // metadata is extra build time data + metadata = "unreleased" + // gitCommit is the git sha1 + gitCommit = "" + // gitTreeState is the state of the git tree + gitTreeState = "" ) // GetVersion returns the semver string of the version func GetVersion() string { - if BuildMetadata == "" { + if metadata == "" { return version } - return version + "+" + BuildMetadata + return version + "+" + metadata } -type Version struct { - // Sem ver string for the version - SemVer string `json:"sem_ver,omitempty"` - GitCommit string `json:"git_commit,omitempty"` +type BuildInfo struct { + // Version is the current semver. + Version string `json:"version,omitempty"` + // GitCommit is the git sha1 + GitCommit string `json:"git_commit,omitempty"` + // GitTreeState is the state of the git tree GitTreeState string `json:"git_tree_state,omitempty"` } -// GetVersionProto returns protobuf representing the version -func GetVersionProto() *Version { - return &Version{ - SemVer: GetVersion(), - GitCommit: GitCommit, - GitTreeState: GitTreeState, +// GetBuildInfo returns build info +func GetBuildInfo() *BuildInfo { + return &BuildInfo{ + Version: GetVersion(), + GitCommit: gitCommit, + GitTreeState: gitTreeState, } } diff --git a/pkg/version/version_test.go b/pkg/version/version_test.go index e403e68b6..198b03736 100644 --- a/pkg/version/version_test.go +++ b/pkg/version/version_test.go @@ -19,27 +19,27 @@ package version // import "k8s.io/helm/pkg/version" import "testing" -func TestGetVersionProto(t *testing.T) { +func TestBuildInfo(t *testing.T) { tests := []struct { version string buildMetadata string gitCommit string gitTreeState string - expected Version + expected BuildInfo }{ - {"", "", "", "", Version{SemVer: "", GitCommit: "", GitTreeState: ""}}, - {"v1.0.0", "", "", "", Version{SemVer: "v1.0.0", GitCommit: "", GitTreeState: ""}}, - {"v1.0.0", "79d5c5f7", "", "", Version{SemVer: "v1.0.0+79d5c5f7", GitCommit: "", GitTreeState: ""}}, - {"v1.0.0", "79d5c5f7", "0d399baec2acda578a217d1aec8d7d707c71e44d", "", Version{SemVer: "v1.0.0+79d5c5f7", GitCommit: "0d399baec2acda578a217d1aec8d7d707c71e44d", GitTreeState: ""}}, - {"v1.0.0", "79d5c5f7", "0d399baec2acda578a217d1aec8d7d707c71e44d", "clean", Version{SemVer: "v1.0.0+79d5c5f7", GitCommit: "0d399baec2acda578a217d1aec8d7d707c71e44d", GitTreeState: "clean"}}, + {"", "", "", "", BuildInfo{Version: "", GitCommit: "", GitTreeState: ""}}, + {"v1.0.0", "", "", "", BuildInfo{Version: "v1.0.0", GitCommit: "", GitTreeState: ""}}, + {"v1.0.0", "79d5c5f7", "", "", BuildInfo{Version: "v1.0.0+79d5c5f7", GitCommit: "", GitTreeState: ""}}, + {"v1.0.0", "79d5c5f7", "0d399baec2acda578a217d1aec8d7d707c71e44d", "", BuildInfo{Version: "v1.0.0+79d5c5f7", GitCommit: "0d399baec2acda578a217d1aec8d7d707c71e44d", GitTreeState: ""}}, + {"v1.0.0", "79d5c5f7", "0d399baec2acda578a217d1aec8d7d707c71e44d", "clean", BuildInfo{Version: "v1.0.0+79d5c5f7", GitCommit: "0d399baec2acda578a217d1aec8d7d707c71e44d", GitTreeState: "clean"}}, } for _, tt := range tests { version = tt.version - BuildMetadata = tt.buildMetadata - GitCommit = tt.gitCommit - GitTreeState = tt.gitTreeState - if versionProto := GetVersionProto(); *versionProto != tt.expected { - t.Errorf("expected Semver(%s), GitCommit(%s) and GitTreeState(%s) to be %v", tt.expected, tt.gitCommit, tt.gitTreeState, *versionProto) + metadata = tt.buildMetadata + gitCommit = tt.gitCommit + gitTreeState = tt.gitTreeState + if versionProto := GetBuildInfo(); *versionProto != tt.expected { + t.Errorf("expected Version(%s), GitCommit(%s) and GitTreeState(%s) to be %v", tt.expected, tt.gitCommit, tt.gitTreeState, *versionProto) } }