-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
Shifting dependency versions in same release branch causing downstream issues #1598
Comments
/remove kind/bug |
I need to fix the upgrade tool's cluster-api version. We addressed this in the most recent releases of CAP*. |
Going forward, I would like to do a better job of staying on a fixed version of controller-runtime, controller-tools, client-go, apimachinery, etc., within a patch stream. |
/remove-kind bug |
Hi @ncdc, Thanks! Yeah, my concern is the going forward part -- hence the suggestion of the comments to make things easier for downstream consumers. But even then it will be tough to catch these as CAPI and its ecosystem grows. I wonder if some job should be set up to ensure there are no graph conflicts across a specified number of related repositories? |
/area dependency I'm not sure if this issue is directly actionable, it seems we might need a policy written somewhere in the repository, but that might be a different issue |
We should write/update a reviewers guide around expectations within a patch stream. |
/lifecycle active |
What steps did you take and what happened:
There seems to be some module weirdness originating out of the Cluster API Upgrade Tool centered around the
github.com/Azure/go-autorest
package.The upgrade tool pulls in
k8s.io/[email protected]+incompatible
which does not import autorest. However, autorest shows up several times as a transitive dependency for the upgrade tool:The upgrade tool is inheriting the transitive dependency on autorest via the direct dependency on
sigs.k8s.io/[email protected]
:However, what happens when a downstream project imports both the upgrade tool and a newer version of Cluster API v1alpha2?
Conflict!
FWIW, the dependency on
github.com/Azure/go-autorest
is transitive viak8s.io/client-go
.Essentially, because Cluster API moves so quickly, and we're starting to see libraries, such as the upgrade tool, built on top of Cluster API, dependency conflicts are being created when downstream work wants to use both the most recent patch of Cluster API with a library built on top of Cluster API that still references an older version from the same release branch.
It makes me wonder if Cluster API should stop updating dependencies unless otherwise absolutely required during a release branch?
k8s.io/client-go v11.0.1-0.20190409021438-1a26190bd76a+incompatible
k8s.io/client-go v0.0.0-20190918200256-06eb1244587a
The result is a messy situation for people trying to use Cluster API and libraries built on top of Cluster API.
One thing we could do to combat this is to start adding comments to
go.mod
files such as:With anything related to k/k, the above comment approach would simplify aligning all k/k related dependencies in a project that imports both Cluster API and libraries built on top of it.
What did you expect to happen:
A downstream consumer of Cluster API should be able to pull in a newer version of Cluster API from the same release branch, even when another dependency pulls in a different version of Cluster API from the same release branch.
cc @ncdc
The text was updated successfully, but these errors were encountered: