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
Publish an tagged v12 alpha version for client-go HEAD #76304
Comments
We don't intend to switch to semantic versioning at this time, since that requires all consumers to change their go import paths and we haven't determined if we want to be that disruptive yet. edit: hmm, just found a quote in a golang/go issue related to this: "First, it appears you think you can opt out of semantic import versioning. You cannot. If you're using modules, you must use semantic import versioning." This doesn't align with what I saw experimentally ( Until 1.15 is released, you need to add require directives to indicate the coordinating releases of k8s.io/apimachinery and k8s.io/api. If you want to auto-upgrade, you'll also need to pin the k8s.io deps using replace directives. In the 1.15 timeframe, we are considering tagging published repos with major versions just like client-go /remove-kind bug |
@liggitt: Those labels are not set on the issue: In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
cc @sttts for major version tagging of all staging repos |
I don't think publishing a v12.0.0 client-go would help your scenario. Automated go patch upgrades would not upgrade client-go, but would still bump to HEAD of the other repos |
@liggitt: Those labels are not set on the issue: In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
So what we suggest here is
I have not heard any strong argument why we shouldn't do (2). (1) means we encourage consumation of the master branch. Do we want that in general or is it just something for now where 1.15 is not released and master is the only way to enjoy go.mods? |
My goal for the moment is more to get to where I can write automation that will automatically perform minor upgrades to a repo's modules (starting with test-infra), conditionally on the upgrade still passing unit tests. Tagging all repos with v15 or whatever would meet this need. The problem with only tagging client-go is that this causes the module system to use HEAD for everything else but v12 for client-go, which won't build. |
xref #72638 |
it actually wouldn't, if I understand correctly what I'm reading around go modules that do not use semantic import versioning... experimentally, depending on v2.0.0 of a module that has a v2.0.0 (resolving to pseudo version |
Would anyone be able to provide a go.mod snippet that should work right now? |
if you want the dev stream of client-go:
if you want the latest 1.14.x release:
|
Thanks! |
@fejta @sttts once a go.mod file is present in a given tag, go expects (and requires, in some cases, for version auto-selection) the module name to reflect the major version, so for go version upgrades to work completely the way you would expect, k8s.io/client-go v12.x.x would need to rename the module to ks8.io/client-go/v12, and all import paths would have to change |
IMO even without solving the rest of the module issues, it would be useful to make all the repos around here behave in the same way. In other words, if I upgrade all my k8s.io/* imports at the same time I would expect use the same kubernetes release for all these imports. This results in me often winding up with latest production k8s.io/client-go kubernetes release but the alpha release for everything else. It would be nice to wind up at the same alpha release for everything. |
Specifically the issue is that as far as i can tell these instructions:
Do not result in the dev stream. It get converted into |
That is not what I see.
|
go mod init example.com/foo
go get k8s.io/client-go@master
more go.mod
|
This is not working for me, and fallback in
I'm stuck on this problem, I'm back to dep for now. Does anyone have a solution? I think is a shame a project like this doesn't use a well supported versioning |
@FedeBev could you elaborate on the issue/error that you are facing? Running |
Issues go stale after 90d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Stale issues rot after 30d of inactivity. If this issue is safe to close now please do so with Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
Rotten issues close after 30d of inactivity. Send feedback to sig-testing, kubernetes/test-infra and/or fejta. |
@fejta-bot: Closing this issue. In response to this:
Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository. |
Attempting a minor upgrade of test-infra's k8s imports results in go choosing
v11.0.0+incompatible
)k8s.io/api v0.0.0-20190408172450-b1350b9e3bc2
, for example).This causes problems as client-go v11 is only guaranteed to behave correctly with kubernetes 1.14. Indeed apimachinery HEAD has backwards incompatible changes to things such as the
watch.NewStreamWatcher
call signature:This can be worked around with a
replace k8s.io/client-go => k8s.io/client-go master
stanza in go.mod.However we get the module system to behave correctly. Ideas include:
module k8s.io/client-go/v12
(instructions per https://github.com/golang/go/wiki/Modules#releasing-modules-v2-or-higher) so that go knows that recent commits are working towards a v12v12.0.0+alpha.0
tag to HEAD client-go commits@kubernetes/sig-api-machinery-bugs @liggitt
ref kubernetes/test-infra#12107
The text was updated successfully, but these errors were encountered: