Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

go mod vendor with replace cannot find revision referring to Git tag #35878

Closed
jaypipes opened this issue Nov 27, 2019 · 8 comments
Closed

go mod vendor with replace cannot find revision referring to Git tag #35878

jaypipes opened this issue Nov 27, 2019 · 8 comments

Comments

@jaypipes
Copy link

What version of Go are you using (go version)?

$ go version
go version go1.12.6 linux/amd64

Does this issue reproduce with the latest release?

Unknown. Cannot test with latest Go release.

What operating system and processor architecture are you using (go env)?

go env Output
$ go env
GOARCH="amd64"
GOBIN=""
GOCACHE="/home/jaypipes/.cache/go-build"
GOEXE=""
GOFLAGS=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/home/jaypipes/go"
GOPROXY=""
GORACE=""
GOROOT="/usr/local/go"
GOTMPDIR=""
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
CC="gcc"
CXX="g++"
CGO_ENABLED="1"
GOMOD=""
CGO_CFLAGS="-g -O2"
CGO_CPPFLAGS=""
CGO_CXXFLAGS="-g -O2"
CGO_FFLAGS="-g -O2"
CGO_LDFLAGS="-g -O2"
PKG_CONFIG="pkg-config"
GOGCCFLAGS="-fPIC -m64 -pthread -fmessage-length=0 -fdebug-prefix-map=/tmp/go-build786177804=/tmp/go-build -gno-record-gcc-switches"

What did you do?

Ran go mod vendor with the following go.mod file which uses the "v1.17.0-rc.1" semver tag for the require pinning of the k8s.io/kubernetes module:

(snipped for brevity)

module k8s.io/autoscaler/cluster-autoscaler

go 1.12

require (
...
	k8s.io/api v0.0.0
	k8s.io/apiextensions-apiserver v0.0.0
	k8s.io/apimachinery v0.0.0
	k8s.io/apiserver v0.0.0
	k8s.io/cli-runtime v0.0.0
	k8s.io/client-go v0.0.0
	k8s.io/cloud-provider v0.0.0
	k8s.io/cluster-bootstrap v0.0.0
	k8s.io/code-generator v0.0.0
	k8s.io/component-base v0.0.0
	k8s.io/cri-api v0.0.0
	k8s.io/csi-translation-lib v0.0.0
	k8s.io/klog v1.0.0
	k8s.io/kube-aggregator v0.0.0
	k8s.io/kube-controller-manager v0.0.0
	k8s.io/kube-proxy v0.0.0
	k8s.io/kube-scheduler v0.0.0
	k8s.io/kubectl v0.0.0
	k8s.io/kubelet v0.0.0
	k8s.io/kubernetes v1.17.0-rc.1
	k8s.io/legacy-cloud-providers v0.0.0
	k8s.io/metrics v0.0.0
	k8s.io/node-api v0.0.0
	k8s.io/sample-apiserver v0.0.0
	k8s.io/sample-cli-plugin v0.0.0
	k8s.io/sample-controller v0.0.0
)

replace (
...
	k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v1.17.0-rc.1
	k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.17.0-rc.1
	k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v1.17.0-rc.1
	k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v1.17.0-rc.1
	k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v1.17.0-rc.1
	k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v1.17.0-rc.1
	k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v1.17.0-rc.1
	k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.17.0-rc.1
	k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v1.17.0-rc.1
	k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v1.17.0-rc.1
	k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v1.17.0-rc.1
	k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.17.0-rc.1
	k8s.io/gengo => k8s.io/gengo v0.0.0-20190822140433-26a664648505
	k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
	k8s.io/klog => k8s.io/klog v1.0.0
	k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v1.17.0-rc.1
	k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.17.0-rc.1
	k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a
	k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v1.17.0-rc.1
	k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v1.17.0-rc.1
	k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v1.17.0-rc.1
	k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v1.17.0-rc.1
	k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.17.0-rc.1
	k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v1.17.0-rc.1
	k8s.io/node-api => k8s.io/kubernetes/staging/src/k8s.io/node-api v1.17.0-rc.1
	k8s.io/repo-infra => k8s.io/repo-infra v0.0.1-alpha.1
	k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v1.17.0-rc.1
	k8s.io/sample-cli-plugin => k8s.io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.17.0-rc.1
	k8s.io/sample-controller => k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1
	k8s.io/system-validators => k8s.io/system-validators v1.0.4
	k8s.io/utils => k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
...
)

which produces an error:

go mod vendor
go: finding k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kubelet v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/client-go v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/node-api v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cloud-provider/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/sample-apiserver/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/csi-translation-lib/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cli-runtime/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kubelet/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/client-go/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/node-api/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-aggregator/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/sample-controller/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-controller-manager/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/apiextensions-apiserver/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-proxy/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kube-scheduler/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/metrics v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cluster-bootstrap/v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/metrics/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/apiserver v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/apiserver/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/sample-cli-plugin/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/cri-api v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/cri-api/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/apimachinery v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/apimachinery/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/legacy-cloud-providers/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/code-generator v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/code-generator/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/kubectl v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/kubectl/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/api v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/api/v1.17.0-rc.1
go: finding k8s.io/kubernetes/staging/src/k8s.io/component-base v1.17.0-rc.1
go: k8s.io/kubernetes/staging/src/k8s.io/[email protected]: unknown revision staging/src/k8s.io/component-base/v1.17.0-rc.1
go: error loading module requirements

Please note that the v1.17.0-rc.1 tag corresponds to an actual Git commit:

jaypipes@thelio:~/go/src/k8s.io/kubernetes$ git rev-parse v1.17.0-rc.1^{}
663a303b6fcec07dfd05657583df337aba329d13

However, if I attempt to pin the k8s.io/kubernetes require entry to a pseudoversion that corresponds to a Git commit that is not referenced to a Git tag, everything works perfectly well:

A go.mod with the pseudoversion require entry that points to a non-tag-referenced Git commit:

module k8s.io/autoscaler/cluster-autoscaler

go 1.12

require (
...
	k8s.io/api v0.0.0
	k8s.io/apimachinery v0.0.0
	k8s.io/client-go v0.0.0
	k8s.io/cloud-provider v0.0.0
	k8s.io/component-base v0.0.0
	k8s.io/klog v1.0.0
	k8s.io/kubernetes v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/legacy-cloud-providers v0.0.0
)

replace (
...
	k8s.io/api => k8s.io/kubernetes/staging/src/k8s.io/api v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/apiextensions-apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiextensions-apiserver v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/apimachinery => k8s.io/kubernetes/staging/src/k8s.io/apimachinery v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/apiserver => k8s.io/kubernetes/staging/src/k8s.io/apiserver v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cli-runtime => k8s.io/kubernetes/staging/src/k8s.io/cli-runtime v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/client-go => k8s.io/kubernetes/staging/src/k8s.io/client-go v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cloud-provider => k8s.io/kubernetes/staging/src/k8s.io/cloud-provider v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cluster-bootstrap => k8s.io/kubernetes/staging/src/k8s.io/cluster-bootstrap v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/code-generator => k8s.io/kubernetes/staging/src/k8s.io/code-generator v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/component-base => k8s.io/kubernetes/staging/src/k8s.io/component-base v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/cri-api => k8s.io/kubernetes/staging/src/k8s.io/cri-api v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/csi-translation-lib => k8s.io/kubernetes/staging/src/k8s.io/csi-translation-lib v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/gengo => k8s.io/gengo v0.0.0-20190822140433-26a664648505
	k8s.io/heapster => k8s.io/heapster v1.2.0-beta.1
	k8s.io/klog => k8s.io/klog v1.0.0
	k8s.io/kube-aggregator => k8s.io/kubernetes/staging/src/k8s.io/kube-aggregator v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kube-controller-manager => k8s.io/kubernetes/staging/src/k8s.io/kube-controller-manager v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kube-openapi => k8s.io/kube-openapi v0.0.0-20191107075043-30be4d16710a
	k8s.io/kube-proxy => k8s.io/kubernetes/staging/src/k8s.io/kube-proxy v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kube-scheduler => k8s.io/kubernetes/staging/src/k8s.io/kube-scheduler v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kubectl => k8s.io/kubernetes/staging/src/k8s.io/kubectl v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/kubelet => k8s.io/kubernetes/staging/src/k8s.io/kubelet v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/legacy-cloud-providers => k8s.io/kubernetes/staging/src/k8s.io/legacy-cloud-providers v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/metrics => k8s.io/kubernetes/staging/src/k8s.io/metrics v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/node-api => k8s.io/kubernetes/staging/src/k8s.io/node-api v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/repo-infra => k8s.io/repo-infra v0.0.1-alpha.1
	k8s.io/sample-apiserver => k8s.io/kubernetes/staging/src/k8s.io/sample-apiserver v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/sample-cli-plugin => k8s.io/kubernetes/staging/src/k8s.io/sample-cli-plugin v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/sample-controller => k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1.0.20191125174925-27babd49b953
	k8s.io/system-validators => k8s.io/system-validators v1.0.4
	k8s.io/utils => k8s.io/utils v0.0.0-20191114184206-e782cd3c129f
)

then go mod vendor runs perfectly fine.

What did you expect to see?

Expected go mod vendor to be able to properly resolved semver-tagged require or replace entries.

@heschi
Copy link
Contributor

heschi commented Nov 27, 2019

The module k8s.io/kubernetes/staging/src/k8s.io/sample-controller, since it's not at the root of the VCS repository, would need a tag staging/src/k8s.io/sample-controller/v1.17.0-rc.1, just as the errors are saying. See https://github.com/golang/go/wiki/Modules#what-are-multi-module-repositories for more explanation.

@jaypipes
Copy link
Author

The module k8s.io/kubernetes/staging/src/k8s.io/sample-controller, since it's not at the root of the VCS repository, would need a tag staging/src/k8s.io/sample-controller/v1.17.0-rc.1, just as the errors are saying. See https://github.com/golang/go/wiki/Modules#what-are-multi-module-repositories for more explanation.

Why does go mod vendor work when referencing a non-tagged "pseudoversion" then?

@jaypipes
Copy link
Author

@heschik are you saying that just for the versions that reference Git tags, this:

k8s.io/sample-controller => k8s.io/kubernetes/staging/src/k8s.io/sample-controller v1.17.0-rc.1

would need to be this instead?

k8s.io/sample-controller => k8s.io/kubernetes/staging/src/k8s.io/sample-controller k8s.io/kubernetes/staging/src/k8s.io/sample-controller/v1.17.0-rc.1

that seems odd to me...

@jaypipes
Copy link
Author

From reading the multi-module repo literature, it seems that Kubernetes will need to add a whole bunch of Git tags, one for each Go submodule in the github.com/kubernetes/kubernetes/staging/src/ directory. Furthermore, we will need to create Git tags every time any of those Go submodules is changed during auto-generation of the staging directories...

@heschi
Copy link
Contributor

heschi commented Nov 27, 2019

Why does go mod vendor work when referencing a non-tagged "pseudoversion" then?

Because that doesn't need any tags at all; pseudoversions apply to the whole repository.

Yes, if you wanted this to work you would need a tag for each module in the repository for each version.

@jaypipes
Copy link
Author

Had a conversation with a Kubernetes developer (@liggitt) and he gave me some insights on how we might rework our dependencies on staging submodules in the k/k tree (basically, don't depend on any of those submodules ;) ).

Closing this out since it's clearly by design and not something wrong with go mod.

@liggitt
Copy link
Contributor

liggitt commented Nov 27, 2019

to use the components under k8s.io/kubernetes/staging/... reference the published repositories and tags directly, don't try to use replace directives to point inside the staging dirs.

you can depend on those directly using just require directives.

if you also need to use k8s.io/kubernetes as a library (which is not recommended/supported), you will need to use replace directives to tell go how to locate all the components within its staging dir. to find the versions to use, you can run this inside the k8s.io/kubernetes/staging/src dir (the example here finds the SHAs for the kubernetes-1.17.0-rc.1 tag):

ls | xargs -n 1 -I{} bash -c "curl -s https://proxy.golang.org/k8s.io/{}/@v/kubernetes-1.17.0-rc.1.info | jq -r '\"replace k8s.io/{} => k8s.io/{} \(.Version)\"'"
replace k8s.io/api => k8s.io/api v0.0.0-20191122220107-b5267f2975e0
replace k8s.io/apiextensions-apiserver => k8s.io/apiextensions-apiserver v0.0.0-20191122222427-64482ea217ff
replace k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20191121175448-79c2a76c473a
replace k8s.io/apiserver => k8s.io/apiserver v0.0.0-20191122221311-9d521947b1e1
replace k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20191122222818-9150eb3ded31
replace k8s.io/client-go => k8s.io/client-go v0.0.0-20191122220542-ed16ecbdf3a0
replace k8s.io/cloud-provider => k8s.io/cloud-provider v0.0.0-20191122224014-59d76ad41876
replace k8s.io/cluster-bootstrap => k8s.io/cluster-bootstrap v0.0.0-20191122223827-289de4a64c1c
replace k8s.io/code-generator => k8s.io/code-generator v0.0.0-20191121175249-e95606b614f0
replace k8s.io/component-base => k8s.io/component-base v0.0.0-20191122220729-2684fb322cb9
replace k8s.io/cri-api => k8s.io/cri-api v0.0.0-20191121183020-775aa3c1cf73
replace k8s.io/csi-translation-lib => k8s.io/csi-translation-lib v0.0.0-20191122224157-518651485193
replace k8s.io/kube-aggregator => k8s.io/kube-aggregator v0.0.0-20191122221605-1e8d331e4dcc
replace k8s.io/kube-controller-manager => k8s.io/kube-controller-manager v0.0.0-20191122223648-5cfd5067047c
replace k8s.io/kube-proxy => k8s.io/kube-proxy v0.0.0-20191122223145-16f2c0c680a0
replace k8s.io/kube-scheduler => k8s.io/kube-scheduler v0.0.0-20191122223507-ac656df73673
replace k8s.io/kubectl => k8s.io/kubectl v0.0.0-20191122225023-1e3c8b70f494
replace k8s.io/kubelet => k8s.io/kubelet v0.0.0-20191122223325-9316382755ad
replace k8s.io/legacy-cloud-providers => k8s.io/legacy-cloud-providers v0.0.0-20191122224431-860df69ff5cc
replace k8s.io/metrics => k8s.io/metrics v0.0.0-20191122222628-19ed227de2b6
replace k8s.io/node-api => k8s.io/node-api v0.0.0-20191122224615-acac7798d6c0
replace k8s.io/sample-apiserver => k8s.io/sample-apiserver v0.0.0-20191122221846-294c70c3d5d4
replace k8s.io/sample-cli-plugin => k8s.io/sample-cli-plugin v0.0.0-20191122223003-df44691c6422
replace k8s.io/sample-controller => k8s.io/sample-controller v0.0.0-20191122222053-b7541bed64c5

@liggitt
Copy link
Contributor

liggitt commented Nov 27, 2019

There's also work in progress to add semver tags to the published repos to make it easier to grab the versions that correspond to a given kubernetes release, see kubernetes/enhancements#1350 for details

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

4 participants