Skip to content

Commit da304af

Browse files
committed
initial jump to go 1.13
1 parent 1018749 commit da304af

File tree

30 files changed

+166
-599
lines changed

30 files changed

+166
-599
lines changed

.travis.yml

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,12 @@ cache:
3030
- $HOME/.cache/go-build
3131

3232
go:
33-
- 1.12.x
33+
- 1.13.x
3434

3535
# The `x_base_steps` top-level key is unknown to travis,
3636
# so we can use it to create a bunch of common build step
3737
# YAML anchors which we use in our build jobs.
3838
x_base_steps:
39-
# before_install for jobs that require dep
40-
- &dep_before_install
41-
before_install:
42-
- travis_retry make tidy
43-
4439
# before_install for jobs that require go builds and do not run for doc-only changes
4540
- &go_before_install
4641
before_install:
@@ -151,7 +146,6 @@ jobs:
151146
name: Unit, Sanity, and Markdown Tests
152147
# Currently, prow/api-ci tests all PRs that target master; use travis for post merge testing and non-master PRs
153148
if: type != pull_request OR branch != master
154-
<<: *dep_before_install
155149
script: make test/sanity test/unit test/markdown
156150
after_success: echo 'Tests Passed'
157151
after_failure: echo 'Failure in unit, sanity, or markdown test'

README.md

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,12 @@ The following workflow is for a new **Helm** operator:
4141
## Prerequisites
4242

4343
- [git][git_tool]
44-
- [go][go_tool] version v1.12+.
44+
- [go][go_tool] version v1.13+.
4545
- [mercurial][mercurial_tool] version 3.9+
4646
- [docker][docker_tool] version 17.03+.
4747
- Alternatively [podman][podman_tool] `v1.2.0+` or [buildah][buildah_tool] `v1.7+`
4848
- [kubectl][kubectl_tool] version v1.11.3+.
4949
- Access to a Kubernetes v1.11.3+ cluster.
50-
- Optional: [dep][dep_tool] version v0.5.0+.
5150
- Optional: [delve](https://github.com/go-delve/delve/tree/master/Documentation/installation) version 1.2.0+ (for `up local --enable-delve`).
5251

5352
## Quick Start
@@ -181,7 +180,6 @@ Operator SDK is under Apache 2.0 license. See the [LICENSE][license_file] file f
181180
[contrib]: ./CONTRIBUTING.MD
182181
[bug_guide]:./doc/dev/reporting_bugs.md
183182
[license_file]:./LICENSE
184-
[dep_tool]:https://golang.github.io/dep/docs/installation.html
185183
[git_tool]:https://git-scm.com/downloads
186184
[go_tool]:https://golang.org/dl/
187185
[mercurial_tool]:https://www.mercurial-scm.org/downloads

ci/dockerfiles/builder.Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM openshift/origin-release:golang-1.12
1+
FROM openshift/origin-release:golang-1.13
22

33
WORKDIR /go/src/github.com/operator-framework/operator-sdk
44
ENV GOPATH=/go PATH=/go/src/github.com/operator-framework/operator-sdk/build:$PATH GOPROXY=https://proxy.golang.org/ GO111MODULE=on

cmd/operator-sdk/build/cmd.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ func buildFunc(cmd *cobra.Command, args []string) error {
119119
PackagePath: path.Join(projutil.GetGoPkg(), filepath.ToSlash(scaffold.ManagerDir)),
120120
Args: args,
121121
Env: goBuildEnv,
122-
GoMod: projutil.IsDepManagerGoMod(),
123122
}
124123
if err := projutil.GoBuild(opts); err != nil {
125124
return fmt.Errorf("failed to build operator binary: (%v)", err)

cmd/operator-sdk/main.go

Lines changed: 14 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ func main() {
5656
log.SetLevel(log.DebugLevel)
5757
log.Debug("Debug logging is set")
5858
}
59-
if err := checkDepManagerForCmd(cmd); err != nil {
59+
if err := checkGoModulesForCmd(cmd); err != nil {
6060
log.Fatal(err)
6161
}
6262
},
@@ -87,29 +87,25 @@ func main() {
8787
}
8888
}
8989

90-
func checkDepManagerForCmd(cmd *cobra.Command) (err error) {
90+
func checkGoModulesForCmd(cmd *cobra.Command) (err error) {
9191
// Certain commands are able to be run anywhere or handle this check
9292
// differently in their CLI code.
9393
if skipCheckForCmd(cmd) {
9494
return nil
9595
}
96-
// Do not perform this check if the project is non-Go, as they will not have
97-
// a (Go) dep manager.
96+
// Do not perform this check if the project is non-Go, as they will be
97+
// using go modules.
9898
if !projutil.IsOperatorGo() {
9999
return nil
100100
}
101-
// Do not perform a dep manager check if the working directory is not in
101+
// Do not perform a go modules check if the working directory is not in
102102
// the project root, as some sub-commands might not require project root.
103103
// Individual subcommands will perform this check as needed.
104104
if err := projutil.CheckProjectRoot(); err != nil {
105105
return nil
106106
}
107107

108-
dm, err := projutil.GetDepManagerType()
109-
if err != nil {
110-
return err
111-
}
112-
return checkDepManager(dm)
108+
return checkGoModules()
113109
}
114110

115111
var commandsToSkip = map[string]struct{}{
@@ -137,27 +133,14 @@ func skipCheckForCmd(cmd *cobra.Command) (skip bool) {
137133
return skip
138134
}
139135

140-
func checkDepManager(dm projutil.DepManagerType) error {
141-
switch dm {
142-
case projutil.DepManagerGoMod:
143-
goModOn, err := projutil.GoModOn()
144-
if err != nil {
145-
return err
146-
}
147-
if !goModOn {
148-
return fmt.Errorf(`dependency manager "modules" requires working directory to be in $GOPATH/src` +
149-
` and GO111MODULE=on, or outside of $GOPATH/src and GO111MODULE="on", "auto", or unset. More info: https://github.com/operator-framework/operator-sdk/blob/master/doc/user-guide.md#go-modules`)
150-
}
151-
case projutil.DepManagerDep:
152-
inGopathSrc, err := projutil.WdInGoPathSrc()
153-
if err != nil {
154-
return err
155-
}
156-
if !inGopathSrc {
157-
return fmt.Errorf(`dependency manager "dep" requires working directory to be in $GOPATH/src`)
158-
}
159-
default:
160-
return projutil.ErrInvalidDepManager(dm)
136+
func checkGoModules() error {
137+
goModOn, err := projutil.GoModOn()
138+
if err != nil {
139+
return err
140+
}
141+
if !goModOn {
142+
return fmt.Errorf(`using go modules requires GO111MODULE="on", "auto", or unset.` +
143+
` More info: https://github.com/operator-framework/operator-sdk/blob/master/doc/user-guide.md#go-modules`)
161144
}
162145
return nil
163146
}

cmd/operator-sdk/migrate/cmd.go

Lines changed: 6 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,11 @@ import (
2525
"github.com/operator-framework/operator-sdk/internal/pkg/scaffold/input"
2626
"github.com/operator-framework/operator-sdk/internal/util/projutil"
2727

28-
"github.com/pkg/errors"
2928
log "github.com/sirupsen/logrus"
3029
"github.com/spf13/cobra"
3130
)
3231

3332
var (
34-
depManager string
3533
headerFile string
3634
repo string
3735
)
@@ -45,9 +43,8 @@ func NewCmd() *cobra.Command {
4543
RunE: migrateRun,
4644
}
4745

48-
newCmd.Flags().StringVar(&depManager, "dep-manager", "modules", `Dependency manager the new project will use (choices: "dep", "modules")`)
4946
newCmd.Flags().StringVar(&headerFile, "header-file", "", "Path to file containing headers for generated Go files. Copied to hack/boilerplate.go.txt")
50-
newCmd.Flags().StringVar(&repo, "repo", "", "Project repository path. Used as the project's Go import path. This must be set if outside of $GOPATH/src with Go modules, and cannot be set if --dep-manager=dep")
47+
newCmd.Flags().StringVar(&repo, "repo", "", "Project repository path. Used as the project's Go import path. This must be set if outside of $GOPATH/src (e.g. github.com/example-inc/my-operator)")
5148

5249
return newCmd
5350
}
@@ -76,7 +73,7 @@ func migrateRun(cmd *cobra.Command, args []string) error {
7673
}
7774

7875
func verifyFlags() error {
79-
err := projutil.CheckDepManagerWithRepo(projutil.DepManagerType(depManager), repo)
76+
err := projutil.CheckRepo(repo)
8077
if err != nil {
8178
return err
8279
}
@@ -119,11 +116,9 @@ func migrateAnsible() error {
119116
s.BoilerplatePath = headerFile
120117
}
121118

122-
if err := scaffoldAnsibleDepManager(s, cfg); err != nil {
123-
return errors.Wrap(err, "migrate Ansible dependency manager file scaffold failed")
124-
}
125-
126119
err = s.Execute(cfg,
120+
&ansible.GoMod{},
121+
&scaffold.Tools{},
127122
&ansible.Main{},
128123
&dockerfile,
129124
&ansible.Entrypoint{},
@@ -160,11 +155,9 @@ func migrateHelm() error {
160155
s.BoilerplatePath = headerFile
161156
}
162157

163-
if err := scaffoldHelmDepManager(s, cfg); err != nil {
164-
return errors.Wrap(err, "migrate Helm dependency manager file scaffold failed")
165-
}
166-
167158
err := s.Execute(cfg,
159+
&helm.GoMod{},
160+
&scaffold.Tools{},
168161
&helm.Main{},
169162
&helm.DockerfileHybrid{
170163
Watches: true,
@@ -189,29 +182,3 @@ func renameDockerfile() error {
189182
log.Infof("Renamed Dockerfile to %s and replaced with newer version. Compare the new Dockerfile to your old one and manually migrate any customizations", newDockerfilePath)
190183
return nil
191184
}
192-
193-
func scaffoldHelmDepManager(s *scaffold.Scaffold, cfg *input.Config) error {
194-
var files []input.File
195-
switch m := projutil.DepManagerType(depManager); m {
196-
case projutil.DepManagerDep:
197-
files = append(files, &helm.GopkgToml{})
198-
case projutil.DepManagerGoMod:
199-
files = append(files, &helm.GoMod{}, &scaffold.Tools{})
200-
default:
201-
return projutil.ErrInvalidDepManager(depManager)
202-
}
203-
return s.Execute(cfg, files...)
204-
}
205-
206-
func scaffoldAnsibleDepManager(s *scaffold.Scaffold, cfg *input.Config) error {
207-
var files []input.File
208-
switch m := projutil.DepManagerType(depManager); m {
209-
case projutil.DepManagerDep:
210-
files = append(files, &ansible.GopkgToml{})
211-
case projutil.DepManagerGoMod:
212-
files = append(files, &ansible.GoMod{}, &scaffold.Tools{})
213-
default:
214-
return projutil.ErrInvalidDepManager(depManager)
215-
}
216-
return s.Execute(cfg, files...)
217-
}

cmd/operator-sdk/new/cmd.go

Lines changed: 39 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,10 @@ generates a skeletal app-operator application in $HOME/projects/example.com/app-
5656
newCmd.Flags().StringVar(&apiVersion, "api-version", "", "Kubernetes apiVersion and has a format of $GROUP_NAME/$VERSION (e.g app.example.com/v1alpha1) - used with \"ansible\" or \"helm\" types")
5757
newCmd.Flags().StringVar(&kind, "kind", "", "Kubernetes CustomResourceDefintion kind. (e.g AppService) - used with \"ansible\" or \"helm\" types")
5858
newCmd.Flags().StringVar(&operatorType, "type", "go", "Type of operator to initialize (choices: \"go\", \"ansible\" or \"helm\")")
59-
newCmd.Flags().StringVar(&depManager, "dep-manager", "modules", `Dependency manager the new project will use (choices: "dep", "modules")`)
60-
newCmd.Flags().StringVar(&repo, "repo", "", "Project repository path for Go operators. Used as the project's Go import path. This must be set if outside of $GOPATH/src with Go modules, and cannot be set if --dep-manager=dep (e.g. github.com/example-inc/my-operator)")
59+
newCmd.Flags().StringVar(&repo, "repo", "", "Project repository path for Go operators. Used as the project's Go import path. This must be set if outside of $GOPATH/src (e.g. github.com/example-inc/my-operator)")
6160
newCmd.Flags().BoolVar(&gitInit, "git-init", false, "Initialize the project directory as a git repository (default false)")
6261
newCmd.Flags().StringVar(&headerFile, "header-file", "", "Path to file containing headers for generated Go files. Copied to hack/boilerplate.go.txt")
63-
newCmd.Flags().BoolVar(&makeVendor, "vendor", false, "Use a vendor directory for dependencies. This flag only applies when --dep-manager=modules (the default)")
62+
newCmd.Flags().BoolVar(&makeVendor, "vendor", false, "Use a vendor directory for dependencies")
6463
newCmd.Flags().BoolVar(&skipValidation, "skip-validation", false, "Do not validate the resulting project's structure and dependencies. (Only used for --type go)")
6564
newCmd.Flags().BoolVar(&generatePlaybook, "generate-playbook", false, "Generate a playbook skeleton. (Only used for --type ansible)")
6665

@@ -76,7 +75,6 @@ var (
7675
kind string
7776
operatorType string
7877
projectName string
79-
depManager string
8078
headerFile string
8179
repo string
8280
gitInit bool
@@ -180,26 +178,16 @@ func doGoScaffold() error {
180178
s.BoilerplatePath = headerFile
181179
}
182180

183-
var err error
184-
switch m := projutil.DepManagerType(depManager); m {
185-
case projutil.DepManagerDep:
186-
err = s.Execute(cfg, &scaffold.GopkgToml{})
187-
case projutil.DepManagerGoMod:
188-
if goModOn, merr := projutil.GoModOn(); merr != nil {
189-
return merr
190-
} else if !goModOn {
191-
return errors.New(`dependency manager "modules" requires working directory to be in $GOPATH/src` +
192-
` and GO111MODULE=on, or outside of $GOPATH/src and GO111MODULE="on", "auto", or unset. More info: https://github.com/operator-framework/operator-sdk/blob/master/doc/user-guide.md#go-modules`)
193-
}
194-
err = s.Execute(cfg, &scaffold.GoMod{}, &scaffold.Tools{})
195-
default:
196-
err = projutil.ErrNoDepManager
197-
}
198-
if err != nil {
199-
return fmt.Errorf("dependency manager file scaffold failed: (%v)", err)
181+
if goModOn, merr := projutil.GoModOn(); merr != nil {
182+
return merr
183+
} else if !goModOn {
184+
return errors.New(`using go modules requires GO111MODULE="on", "auto", or unset.` +
185+
` More info: https://github.com/operator-framework/operator-sdk/blob/master/doc/user-guide.md#go-modules`)
200186
}
201187

202-
err = s.Execute(cfg,
188+
err := s.Execute(cfg,
189+
&scaffold.GoMod{},
190+
&scaffold.Tools{},
203191
&scaffold.Cmd{},
204192
&scaffold.Dockerfile{},
205193
&scaffold.Entrypoint{},
@@ -384,12 +372,7 @@ func verifyFlags() error {
384372
return fmt.Errorf("operators of type Go do not use --api-version or --kind")
385373
}
386374

387-
dm := projutil.DepManagerType(depManager)
388-
if !makeVendor && dm == projutil.DepManagerDep {
389-
log.Warnf("--dep-manager=dep requires a vendor directory; ignoring --vendor=false")
390-
}
391-
err := projutil.CheckDepManagerWithRepo(dm, repo)
392-
if err != nil {
375+
if err := projutil.CheckRepo(repo); err != nil {
393376
return err
394377
}
395378
}
@@ -424,30 +407,20 @@ func execProjCmd(cmd string, args ...string) error {
424407
}
425408

426409
func getDeps() error {
427-
switch m := projutil.DepManagerType(depManager); m {
428-
case projutil.DepManagerDep:
429-
log.Info("Running dep ensure")
430-
if err := execProjCmd("dep", "ensure", "-v"); err != nil {
431-
return err
432-
}
433-
case projutil.DepManagerGoMod:
434-
// Only when a user requests a vendor directory be created should
435-
// "go mod vendor" be run during project initialization.
436-
if makeVendor {
437-
log.Info("Running go mod vendor")
438-
opts := projutil.GoCmdOptions{
439-
Args: []string{"-v"},
440-
Dir: filepath.Join(projutil.MustGetwd(), projectName),
441-
}
442-
if err := projutil.GoCmd("mod vendor", opts); err != nil {
443-
return err
444-
}
445-
} else {
446-
// Avoid done message.
447-
return nil
448-
}
449-
default:
450-
return projutil.ErrInvalidDepManager(depManager)
410+
411+
// Only when a user requests a vendor directory be created should
412+
// "go mod vendor" be run during project initialization.
413+
if !makeVendor {
414+
return nil
415+
}
416+
417+
log.Info("Running go mod vendor")
418+
opts := projutil.GoCmdOptions{
419+
Args: []string{"-v"},
420+
Dir: filepath.Join(projutil.MustGetwd(), projectName),
421+
}
422+
if err := projutil.GoCmd("mod vendor", opts); err != nil {
423+
return err
451424
}
452425
log.Info("Done getting dependencies")
453426
return nil
@@ -463,24 +436,20 @@ func initGit() error {
463436
}
464437

465438
func validateProject() error {
466-
switch projutil.DepManagerType(depManager) {
467-
case projutil.DepManagerGoMod:
468-
log.Info("Validating project")
469-
// Run "go build ./..." to make sure all packages can be built
470-
// correctly. From "go help build":
471-
//
472-
// When compiling multiple packages or a single non-main package,
473-
// build compiles the packages but discards the resulting object,
474-
// serving only as a check that the packages can be built.
475-
opts := projutil.GoCmdOptions{
476-
PackagePath: "./...",
477-
Dir: filepath.Join(projutil.MustGetwd(), projectName),
478-
}
479-
if err := projutil.GoBuild(opts); err != nil {
480-
return err
481-
}
482-
log.Info("Project validation successful.")
439+
log.Info("Validating project")
440+
// Run "go build ./..." to make sure all packages can be built
441+
// correctly. From "go help build":
442+
//
443+
// When compiling multiple packages or a single non-main package,
444+
// build compiles the packages but discards the resulting object,
445+
// serving only as a check that the packages can be built.
446+
opts := projutil.GoCmdOptions{
447+
PackagePath: "./...",
448+
Dir: filepath.Join(projutil.MustGetwd(), projectName),
449+
}
450+
if err := projutil.GoBuild(opts); err != nil {
451+
return err
483452
}
484-
453+
log.Info("Project validation successful.")
485454
return nil
486455
}

0 commit comments

Comments
 (0)