-
Notifications
You must be signed in to change notification settings - Fork 2.2k
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
New feature: separateMultiplePatch and separateMultipleMinor #6576
Comments
I have no objection to a new feature
i.e. do you expect to get 6 separate PRs? |
Yeah, that's exactly what we need! |
Thinking that through, I think that means that if I'm also wondering if there'd be anyone who wants 4 PRs not 6, i.e.
If that's a possibility then maybe our new option for your case should be named something more explicit like |
Well, I haven't explored the code very deeply yet, here's how I perceive those options as a user, please correct me if I'm wrong:
I think I understand your idea behind
Here's how they would work:
Tell me if that makes sense to you, you know better :) |
I think I need to put it in a table/matrix to better visualize it |
|
It's very interesting that this was requested nearly exactly one year ago and today I asked for something very similar in #10628 and #10629 (now closed in favor of this one). Here is my "conclusion" that I want to contribute to the discussion: And the underlying "issue" with all those options is that it get's harder and harder to understand what should happen. So thinking about a different way of configuring and describing it (and most likely also implementing it) makes sense. E.g. there could be one option for all of it, e.g. Or there could be one option for each level
Or maybe this way of thinking about how to make it configurable in a way that's easy to understand, leads to something even better? PS: I did see that this is not the first attempt in getting those options more clear and that there is quite an amount of issues and discussions related to those options. |
The proposed solution here does not match the stated requirements. Having a branch for every version is different to supporting separateMultipleX. It would be like separateEveryVersion which overrides all the others. If we implemented this it should come with a warning that this would cause too much noise for most projects. |
The most important is separateMultipleMinor and it does not need to be held up waiting for a PR which covers the other two, so ideally the separateMultipleX ones are in separate feature request issues while this can be separateEveryVersion |
BTW if we have multiple related options like this, but some of them combined make no sense or contradict, then it's a sign we should think of consolidating multiple options into less such that they can no longer contradict each other. |
@rarkins Can you maybe make a short summary of where we stand now, in simplified terms? I find that the current discussion is flying way over my head. 🙈 I guess you want separate issues to split this issue into smaller parts? But then you also say you want to consolidate the If you want new issues, I think it's best if you create them. 😉 You seem to know the direction you want to take this in... 😄 |
If we keep going with the existing approach, we can get contradictions: However it's pretty easy to resolve/override them, so that doesn't mean we should avoid them. Is there any more elegant way which could improve on this approach? BTW there can also be a new option |
I'm not sure that I understand all of the use cases for the existing options, but what about something simple like this? Replace all of the
There could perhaps be another setting for controlling which versions Renovate generates PRs for so that you don't wind up with a ton of pending |
The above is not compatible with today's default, which in simple terms means "One latest major PR, and one latest minor PR". I.e. it doesn't give you one PR per major release - just the highest major |
Yeah,
For example, with Kubernetes, I'd like to be able to tell Renovate, "I'd like a PR for the latest patch of the current minor release, and a PR for every newer minor release." I'm just not sure how to translate the knobs above into a straightforward set of configuration parameters yet. 🤔 |
I'm trying to think if we can understand and then maybe improve the semantics:
Let's assume we're on 1.0.0 and the available updates are 1.0.1, 1.0.2, 1.1.0, 1.1.1, 1.2.0, 2.0.0, 2.0.1, 2.1.0, 3.0.0 So although in theory 4 options would give us 16 permutations, the only valid ones are:
And if we add the capability for
Another way of framing it:
If you get a "none" on one row, the ones below it are ignored (must be none). Default behavior is currently separateMajor=current+latest. This doesn't seem perfect, but the best idea so far |
I think each of your "every major, every minor" permutations should include 2.0.1. |
It's intentional not to separate minor streams in major releases, although I admit it's not well described by "every major, every minot". I don't think such an option is practical or useful except in some very rare edge cases. |
In your example, if 3.1.0 was also available, would 3.0.0 and 3.1.0 both be candidates in a “every major, every minor” scenario? If so I think your comment is reasonable, although potentially unintuitive given the configuration options. And hopefully this shouldn’t crop up in practice as the user should track the latest much more closely. |
No, my intention was that you don't separate minor other than in the current major stream |
I would need separate minors for the latest major to ensure there are candidate versions that satisfy my stability criteria, otherwise the latest major is always out of reach. Without manual intervention I’m always 1 major behind, and each upgrade is large. Is this really an edge case? |
What's an example of your "stability criteria"? |
I run renovate via docker and so have control over the version that runs. It is subject to the same 7 stabilityDays that I apply to everything. As it stands I’m still on v30 as there hasn’t been a period of 7 days when the latest v31 has remained constant. Perhaps the answer here is that due to the continuous deployment nature of renovate, and the fact it is a utility rather than a dependency, stabilityDays doesn’t make as much sense. Maybe this is an edge case. |
Check out the config option internalChecksFilter=strict. But old doesn't necessarily mean bug-free.. |
@rarkins I guess it depends. Intuitively, in my head, if I've dropped behind on a dependency, I'd prefer to upgrade in batches, first small lower-risk ones (patch version by version), and as I get up to speed I'd feel more comfortable biting of larger chunks of upgrades (as I may have a warm testing habit/framework/automation to use when I get to newer versions). Any thoughts on how to move this forward in general? |
you can workaround this with a package rule and allows versions filter. |
I would be in favor of a |
We're currently also missing a In our case, our Angular v14 project is still on TypeScript v4.7, because the v4.8 update was failing because of some other reason. => We would like to be able to write a package rule that enables |
Hi. I came here from #19194 where the use-case is slightly different. For what it's worth, I'd been thinking of a |
🎉 This issue has been resolved in version 37.269.0 🎉 The release is available on: Your semantic-release bot 📦🚀 |
What would you like Renovate to be able to do?
We at preply.com are always frustrated when we're either blocked or catching bugs after the following actions:
v4.5.6
, and we're ready to mergev4.5.7
orv4.6.0
v4.5.6
commit is no longer there.Describe the solution you'd like
We would love a separate PR for every version.
Describe alternatives you've considered
Neither
separateMajorMinor
norseparateMultipleMajor
norseparateMinorPatch
seem to be expected to do that thing.Additional context
Our NPM packages are continuously developed, merged, and deployed by independent teams. Different teams are allowed to contribute to shared packages. Once contributors have tested a Renovate's PR, they wanna see it live immediately.
Thank you for kindly considering my request. Please me if that makes sense and if you want me to code that.
The text was updated successfully, but these errors were encountered: