Skip to content

Commit cc5d27e

Browse files
committed
internal/*: define ImageVersion, which is set to the most recent
of operator-sdk repo tag or release commit's future tag. This variable is consumed by ansible-operator, helm-operator, and scorecard plugins Makefile: set IMAGE_VERSION to v1.1.0, and set ImageVersion in ldflags internal/version: removed GoVersion in favor of using runtime.Version() in dependent packages
1 parent e470756 commit cc5d27e

File tree

16 files changed

+76
-50
lines changed

16 files changed

+76
-50
lines changed

Makefile

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
SHELL = /bin/bash
22

3+
# IMAGE_VERSION represents the ansible-operator, helm-operator, and scorecard subproject versions.
4+
# This value must be updated to the release tag of the most recent release, a change that must
5+
# occur in the release commit. IMAGE_VERSION will be removed once each subproject that uses this
6+
# version is moved to a separate repo and release process.
7+
export IMAGE_VERSION = v1.1.0
38
# Build-time variables to inject into binaries
49
export SIMPLE_VERSION = $(shell (test "$(shell git describe)" = "$(shell git describe --abbrev=0)" && echo $(shell git describe)) || echo $(shell git describe --abbrev=0)+git)
510
export GIT_VERSION = $(shell git describe --dirty --tags --always)
@@ -20,6 +25,7 @@ GO_BUILD_ARGS = \
2025
-X '$(REPO)/internal/version.GitVersion=$(GIT_VERSION)' \
2126
-X '$(REPO)/internal/version.GitCommit=$(GIT_COMMIT)' \
2227
-X '$(REPO)/internal/version.KubernetesVersion=v$(K8S_VERSION)' \
28+
-X '$(REPO)/internal/version.ImageVersion=$(IMAGE_VERSION)' \
2329
" \
2430

2531
export GO111MODULE = on
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
entries:
2+
- description: >
3+
Removed redundant platform information from `operator-sdk version` output
4+
kind: bugfix

internal/cmd/ansible-operator/version/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,5 @@ func run() {
4040
version = ver.Version
4141
}
4242
fmt.Printf("ansible-operator version: %q, commit: %q, kubernetes version: %q, go version: %q, GOOS: %q, GOARCH: %q\n",
43-
version, ver.GitCommit, ver.KubernetesVersion, ver.GoVersion, runtime.GOOS, runtime.GOARCH)
43+
version, ver.GitCommit, ver.KubernetesVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
4444
}

internal/cmd/ansible-operator/version/cmd_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var _ = Describe("Running a version command", func() {
5757
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("version: %q", version)))
5858
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("commit: %q", ver.GitCommit)))
5959
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("kubernetes version: %q", ver.KubernetesVersion)))
60-
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("go version: %q", ver.GoVersion)))
60+
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("go version: %q", runtime.Version())))
6161
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("GOOS: %q", runtime.GOOS)))
6262
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("GOARCH: %q", runtime.GOARCH)))
6363
})

internal/cmd/helm-operator/version/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,5 @@ func run() {
4040
version = ver.Version
4141
}
4242
fmt.Printf("helm-operator version: %q, commit: %q, kubernetes version: %q, go version: %q, GOOS: %q, GOARCH: %q\n",
43-
version, ver.GitCommit, ver.KubernetesVersion, ver.GoVersion, runtime.GOOS, runtime.GOARCH)
43+
version, ver.GitCommit, ver.KubernetesVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
4444
}

internal/cmd/helm-operator/version/cmd_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var _ = Describe("Running a version command", func() {
5757
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("version: %q", version)))
5858
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("commit: %q", ver.GitCommit)))
5959
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("kubernetes version: %q", ver.KubernetesVersion)))
60-
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("go version: %q", ver.GoVersion)))
60+
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("go version: %q", runtime.Version())))
6161
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("GOOS: %q", runtime.GOOS)))
6262
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("GOARCH: %q", runtime.GOARCH)))
6363
})

internal/cmd/operator-sdk/version/cmd.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,5 +36,5 @@ func NewCmd() *cobra.Command {
3636

3737
func run() {
3838
fmt.Printf("operator-sdk version: %q, commit: %q, kubernetes version: %q, go version: %q, GOOS: %q, GOARCH: %q\n",
39-
ver.GitVersion, ver.GitCommit, ver.KubernetesVersion, ver.GoVersion, runtime.GOOS, runtime.GOARCH)
39+
ver.GitVersion, ver.GitCommit, ver.KubernetesVersion, runtime.Version(), runtime.GOOS, runtime.GOARCH)
4040
}

internal/cmd/operator-sdk/version/cmd_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ var _ = Describe("Running a version command", func() {
5757
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("version: %q", version)))
5858
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("commit: %q", ver.GitCommit)))
5959
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("kubernetes version: %q", ver.KubernetesVersion)))
60-
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("go version: %q", ver.GoVersion)))
60+
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("go version: %q", runtime.Version())))
6161
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("GOOS: %q", runtime.GOOS)))
6262
Expect(stdoutString).To(ContainSubstring(fmt.Sprintf("GOARCH: %q", runtime.GOARCH)))
6363
})

internal/plugins/ansible/v1/scaffolds/init.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"sigs.k8s.io/kubebuilder/pkg/model/config"
2323
"sigs.k8s.io/kubebuilder/pkg/plugin/scaffold"
2424

25+
"github.com/operator-framework/operator-sdk/internal/kubebuilder/machinery"
2526
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates"
2627
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/config/kdefault"
2728
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/config/manager"
@@ -32,18 +33,20 @@ import (
3233
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/molecule/mdefault"
3334
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/molecule/mkind"
3435
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/playbooks"
35-
ansibleroles "github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/roles"
36-
37-
"github.com/operator-framework/operator-sdk/internal/kubebuilder/machinery"
36+
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/scaffolds/internal/templates/roles"
37+
"github.com/operator-framework/operator-sdk/internal/version"
3838
)
3939

4040
const (
41-
// KustomizeVersion is the kubernetes-sigs/kustomize version to be used in the project
42-
KustomizeVersion = "v3.5.4"
41+
// kustomizeVersion is the sigs.k8s.io/kustomize version to be used in the project
42+
kustomizeVersion = "v3.5.4"
4343

4444
imageName = "controller:latest"
4545
)
4646

47+
// ansibleOperatorVersion is set to the version of ansible-operator at compile-time.
48+
var ansibleOperatorVersion = version.ImageVersion
49+
4750
var _ scaffold.Scaffolder = &initScaffolder{}
4851

4952
type initScaffolder struct {
@@ -79,7 +82,12 @@ func (s *initScaffolder) Scaffold() error {
7982
func (s *initScaffolder) scaffold() error {
8083
return machinery.NewScaffold().Execute(
8184
s.newUniverse(),
82-
&templates.Dockerfile{},
85+
&templates.Dockerfile{AnsibleOperatorVersion: ansibleOperatorVersion},
86+
&templates.Makefile{
87+
Image: imageName,
88+
KustomizeVersion: kustomizeVersion,
89+
AnsibleOperatorVersion: ansibleOperatorVersion,
90+
},
8391
&templates.GitIgnore{},
8492
&templates.RequirementsYml{},
8593
&templates.Watches{},
@@ -103,8 +111,7 @@ func (s *initScaffolder) scaffold() error {
103111
&kdefault.Kustomize{},
104112
&kdefault.AuthProxyPatch{},
105113

106-
&templates.Makefile{},
107-
&ansibleroles.Placeholder{},
114+
&roles.Placeholder{},
108115
&playbooks.Placeholder{},
109116

110117
&mdefault.Converge{},

internal/plugins/ansible/v1/scaffolds/internal/templates/dockerfile.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,21 +15,22 @@
1515
package templates
1616

1717
import (
18-
"strings"
18+
"errors"
1919

2020
"sigs.k8s.io/kubebuilder/pkg/model/file"
2121

2222
"github.com/operator-framework/operator-sdk/internal/plugins/ansible/v1/constants"
23-
"github.com/operator-framework/operator-sdk/internal/version"
2423
)
2524

2625
var _ file.Template = &Dockerfile{}
2726

2827
// Dockerfile scaffolds a Dockerfile for building a main
2928
type Dockerfile struct {
3029
file.TemplateMixin
31-
ImageTag string
30+
// AnsibleOperatorVersion is the version of the Dockerfile's base image.
31+
AnsibleOperatorVersion string
3232

33+
// These variables are always overwritten.
3334
RolesDir string
3435
PlaybooksDir string
3536
}
@@ -41,13 +42,18 @@ func (f *Dockerfile) SetTemplateDefaults() error {
4142
}
4243

4344
f.TemplateBody = dockerfileTemplate
45+
46+
if f.AnsibleOperatorVersion == "" {
47+
return errors.New("ansible-operator version is required in scaffold")
48+
}
49+
4450
f.RolesDir = constants.RolesDir
4551
f.PlaybooksDir = constants.PlaybooksDir
46-
f.ImageTag = strings.TrimSuffix(version.Version, "+git")
52+
4753
return nil
4854
}
4955

50-
const dockerfileTemplate = `FROM quay.io/operator-framework/ansible-operator:{{.ImageTag}}
56+
const dockerfileTemplate = `FROM quay.io/operator-framework/ansible-operator:{{ .AnsibleOperatorVersion }}
5157
5258
COPY requirements.yml ${HOME}/requirements.yml
5359
RUN ansible-galaxy collection install -r ${HOME}/requirements.yml \

internal/plugins/ansible/v1/scaffolds/internal/templates/makefile.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ limitations under the License.
1818
package templates
1919

2020
import (
21-
"strings"
21+
"errors"
2222

2323
"sigs.k8s.io/kubebuilder/pkg/model/file"
24-
25-
"github.com/operator-framework/operator-sdk/internal/version"
2624
)
2725

2826
var _ file.Template = &Makefile{}
@@ -37,7 +35,7 @@ type Makefile struct {
3735
// Kustomize version to use in the project
3836
KustomizeVersion string
3937

40-
// AnsibleOperatorVersion is the version of the base image and operator binary used in the project
38+
// AnsibleOperatorVersion is the version of the ansible-operator binary downloaded by the Makefile.
4139
AnsibleOperatorVersion string
4240
}
4341

@@ -56,11 +54,11 @@ func (f *Makefile) SetTemplateDefaults() error {
5654
}
5755

5856
if f.KustomizeVersion == "" {
59-
f.KustomizeVersion = "v3.5.4"
57+
return errors.New("kustomize version is required in scaffold")
6058
}
6159

6260
if f.AnsibleOperatorVersion == "" {
63-
f.AnsibleOperatorVersion = strings.TrimSuffix(version.Version, "+git")
61+
return errors.New("ansible-operator version is required in scaffold")
6462
}
6563

6664
return nil

internal/plugins/helm/v1/scaffolds/init.go

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ package scaffolds
1919

2020
import (
2121
"os"
22-
"strings"
2322

2423
"sigs.k8s.io/kubebuilder/pkg/model"
2524
"sigs.k8s.io/kubebuilder/pkg/model/config"
@@ -36,14 +35,14 @@ import (
3635
)
3736

3837
const (
39-
// KustomizeVersion is the kubernetes-sigs/kustomize version to be used in the project
40-
KustomizeVersion = "v3.5.4"
38+
// kustomizeVersion is the sigs.k8s.io/kustomize version to be used in the project
39+
kustomizeVersion = "v3.5.4"
4140

4241
imageName = "controller:latest"
4342
)
4443

45-
// HelmOperatorVersion is the version of the helm binary used in the Makefile
46-
var HelmOperatorVersion = strings.TrimSuffix(version.Version, "+git")
44+
// helmOperatorVersion is set to the version of helm-operator at compile-time.
45+
var helmOperatorVersion = version.ImageVersion
4746

4847
var _ scaffold.Scaffolder = &initScaffolder{}
4948

@@ -84,13 +83,13 @@ func (s *initScaffolder) scaffold() error {
8483
return machinery.NewScaffold().Execute(
8584
s.newUniverse(),
8685
&templates.Dockerfile{
87-
HelmOperatorVersion: HelmOperatorVersion,
86+
HelmOperatorVersion: helmOperatorVersion,
8887
},
8988
&templates.GitIgnore{},
9089
&templates.Makefile{
9190
Image: imageName,
92-
KustomizeVersion: KustomizeVersion,
93-
HelmOperatorVersion: HelmOperatorVersion,
91+
KustomizeVersion: kustomizeVersion,
92+
HelmOperatorVersion: helmOperatorVersion,
9493
},
9594
&templates.Watches{},
9695
&rbac.AuthProxyRole{},

internal/plugins/helm/v1/scaffolds/internal/templates/dockerfile.go

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
package templates
1616

1717
import (
18+
"errors"
19+
1820
"sigs.k8s.io/kubebuilder/pkg/model/file"
1921
)
2022

@@ -24,7 +26,7 @@ var _ file.Template = &Dockerfile{}
2426
type Dockerfile struct {
2527
file.TemplateMixin
2628

27-
// HelmOperatorVersion is the version of the base image and operator binary used in the project
29+
// HelmOperatorVersion is the version of the Dockerfile's base image.
2830
HelmOperatorVersion string
2931
}
3032

@@ -36,6 +38,10 @@ func (f *Dockerfile) SetTemplateDefaults() error {
3638

3739
f.TemplateBody = dockerfileTemplate
3840

41+
if f.HelmOperatorVersion == "" {
42+
return errors.New("helm-operator version is required in scaffold")
43+
}
44+
3945
return nil
4046
}
4147

internal/plugins/helm/v1/scaffolds/internal/templates/makefile.go

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,9 @@ limitations under the License.
1818
package templates
1919

2020
import (
21-
"strings"
21+
"errors"
2222

2323
"sigs.k8s.io/kubebuilder/pkg/model/file"
24-
25-
"github.com/operator-framework/operator-sdk/internal/version"
2624
)
2725

2826
var _ file.Template = &Makefile{}
@@ -37,7 +35,7 @@ type Makefile struct {
3735
// Kustomize version to use in the project
3836
KustomizeVersion string
3937

40-
// HelmOperatorVersion is the version of the base image and operator binary used in the project
38+
// HelmOperatorVersion is the version of the helm-operator binary downloaded by the Makefile.
4139
HelmOperatorVersion string
4240
}
4341

@@ -56,11 +54,11 @@ func (f *Makefile) SetTemplateDefaults() error {
5654
}
5755

5856
if f.KustomizeVersion == "" {
59-
f.KustomizeVersion = "v3.5.4"
57+
return errors.New("kustomize version is required in scaffold")
6058
}
6159

6260
if f.HelmOperatorVersion == "" {
63-
f.HelmOperatorVersion = strings.TrimSuffix(version.Version, "+git")
61+
return errors.New("helm-operator version is required in scaffold")
6462
}
6563

6664
return nil

internal/plugins/scorecard/init.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"io/ioutil"
2121
"os"
2222
"path/filepath"
23-
"strings"
2423
"text/template"
2524

2625
"github.com/operator-framework/api/pkg/apis/scorecard/v1alpha3"
@@ -33,6 +32,9 @@ import (
3332
"github.com/operator-framework/operator-sdk/internal/version"
3433
)
3534

35+
// scorecardVersion is set to the version of scorecard at compile-time.
36+
var scorecardVersion = version.ImageVersion
37+
3638
const (
3739
// kustomization.yaml file template for the scorecard componentconfig. This should always be written to
3840
// config/scorecard/kustomization.yaml since it only references files in config.
@@ -63,8 +65,7 @@ const (
6365
)
6466

6567
// defaultTestImageTag points to the latest-released image.
66-
var defaultTestImageTag = fmt.Sprintf("quay.io/operator-framework/scorecard-test:%s",
67-
strings.TrimSuffix(version.Version, "+git"))
68+
var defaultTestImageTag = fmt.Sprintf("quay.io/operator-framework/scorecard-test:%s", scorecardVersion)
6869

6970
// defaultDir is the default directory in which to generate kustomize bases and the kustomization.yaml.
7071
var defaultDir = filepath.Join("config", "scorecard")

internal/version/version.go

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -14,16 +14,17 @@
1414

1515
package version
1616

17-
import (
18-
"fmt"
19-
"runtime"
20-
)
21-
22-
//var needs to be used instead of const for ldflags
17+
// var needs to be used instead of const for ldflags
2318
var (
2419
Version = "unknown"
2520
GitVersion = "unknown"
2621
GitCommit = "unknown"
2722
KubernetesVersion = "unknown"
28-
GoVersion = fmt.Sprintf("%s %s/%s", runtime.Version(), runtime.GOOS, runtime.GOARCH)
23+
24+
// ImageVersion represents the ansible-operator, helm-operator, and scorecard subproject versions,
25+
// which is used in each plugin to specify binary and/or image versions. This is set to the
26+
// most recent operator-sdk release tag such that samples are generated with the correct versions
27+
// in a release commit. Once each element that uses this version is moved to a separate repo
28+
// and release process, this variable will be removed.
29+
ImageVersion = "unknown"
2930
)

0 commit comments

Comments
 (0)