Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

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

Improved age filtering/controls #12914

Closed
rarkins opened this issue Dec 2, 2021 · 15 comments
Closed

Improved age filtering/controls #12914

rarkins opened this issue Dec 2, 2021 · 15 comments
Labels
priority-3-medium Default priority, "should be done" but isn't prioritised ahead of others status:requirements Full requirements are not yet known, so implementation should not be started type:feature Feature (new functionality)

Comments

@rarkins
Copy link
Collaborator

rarkins commented Dec 2, 2021

What would you like Renovate to be able to do?

Be able to control not only the release's minimum age (minimumReleaseAge) but also the potential to control all of these separately or at once:

  • release age
  • minor age
  • major age

The idea is you can e.g. control through config: "Don't raise a major PR until it's at least a month old, and no new release for 3 days"

If you have any ideas on how this should be implemented, please tell us here.

Maybe add minimumMinorStreamAge and minimumMajorAge.

For a release like 2.3.4:

  • minimumReleaseAge would be how old 2.3.4 is
  • minimumMinorStreamAge be how long since 2.3.0 was released
  • minimumMajorAge would be how long since 2.0.0 was released

We probably need to allow a more flexible syntax than days too. Maybe even invent our own like 1m2w3d4h

Is this a feature you are interested in implementing yourself?

No

@rarkins rarkins added type:feature Feature (new functionality) status:requirements Full requirements are not yet known, so implementation should not be started priority-5-triage labels Dec 2, 2021
@HonkingGoose
Copy link
Collaborator

Do you want to rename stabilityDays -> minimumReleaseAge in a new breaking release soon then? We're already gearing up for more breaking changes right now. I think the new name is way better! 😄

@rarkins
Copy link
Collaborator Author

rarkins commented Dec 2, 2021

We don't need to do a breaking release as long as we add migration code, which in this case should be fairly easy.

@HonkingGoose
Copy link
Collaborator

Do you want a new issue to track the rename of stabilityDays -> minimumReleaseAge?

@rarkins
Copy link
Collaborator Author

rarkins commented Dec 2, 2021

Let's keep it here for now, we can maybe break it out later if we implement it separately. We will want to use a new unified syntax for all.

BTW minimumMinorAge is shorter but I worried it might "sound wrong". What do you think?

@secustor
Copy link
Collaborator

secustor commented Dec 2, 2021

Wouldn't it be more intuitive from the UX perspective to use the major, minor configuration blocks instead of minimumMinoror minimumMajor?

@rarkins
Copy link
Collaborator Author

rarkins commented Dec 2, 2021

No, because then they'd get merged over the top and you could have only one. Also, you wouldn't know if it applies to 2.3.4, 2.3.0 or 2.0.0.

@HonkingGoose
Copy link
Collaborator

@rarkins I think you have decided on a better name, but forgot to mention it in this issue?

Relevant part of something you said elsewhere 1:

... new majorStreamDelay feature (sorry, forget which name I proposed) inside Renovate ...

Footnotes

  1. https://github.com/renovatebot/.github/pull/32#issuecomment-994720312

@rarkins
Copy link
Collaborator Author

rarkins commented Dec 15, 2021

I'm not sure it's better :)

@HonkingGoose
Copy link
Collaborator

Oh I see! I misunderstood your comment... 🙈

I thought it was meant in a "I've found a better name" way, but it's really more like: "I know there's a feature request out there somewhere with this sort of feature, what's the name again?" way... 😄

It's tricky to find a better name that works for major, minor and patch level updates delays.

@mcmxcdev
Copy link
Contributor

mcmxcdev commented Nov 7, 2022

Cool to find this issue; more flexibility for stabilityDays would definitely be appreciated!

In our team, we are currently debating a missing functionality that would be helpful for us in regards to stabilityDays:
Delay a minor release e.g. by 30 days with stabilityDays, but then don't pick the version based on timestamp or release date but pick the latest patch version on the same minor version range, which would be bug fixes for that minor release potentially.

This came up due to us receiving a PR to upgrade pnpm which is releasing quickly in small increments.
Renovate would upgrade us from 7.13.0 to 7.13.2 right now, but we would like to consume 7.13.6 ideally. We know there is no guarantee that this version will be bug free, but it might be better than previous ones.

Would be great to have this considered.

@HonkingGoose
Copy link
Collaborator

HonkingGoose commented Nov 7, 2022

This came up due to us receiving a PR to upgrade pnpm which is releasing quickly in small increments.
Renovate would upgrade us from 7.13.0 to 7.13.2 right now, but we would like to consume 7.13.6 ideally. We know there is no guarantee that this version will be bug free, but it might be better than previous ones.

@mcmxcdev You can get close to your ideal workflow by:

  • Setting the pnpm package to a monthly schedule
  • Enabling the Dependency Dashboard
  • To update pnpm earlier: request the pnpm update on the Dependency Dashboard

I recommend "pinning" the Dependency Dashboard issue on your repository. 1 That way your team will always see it. 😉

Renovate config:

{
  "extends": [":dependencyDashboard"],
  "packageRules": [
    {
      "matchPackageNames": ["pnpm"],
      "extends": ["schedule:monthly"]
    }
  ]
}

Links to Renovate documentation:

Footnotes

  1. GitHub Docs, pinning an issue to your repository

@mcmxcdev
Copy link
Contributor

mcmxcdev commented Nov 8, 2022

Hey @HonkingGoose, thanks for the detailed response!
I think you might have misunderstood: we have set schedule to weekly, dependency dashboard is already enabled, but we want to delay existing updates by 30 days intentionally and then fetch the latest patch version of a minor.

WIth your suggestion, we would wait a month but then get the newest versions which are most likely not battle-tested yet.

@rarkins
Copy link
Collaborator Author

rarkins commented Nov 8, 2022

How can you say "delay by 30 days" but also "latest patch version"? e.g. what if the latest patch version is 2 hours old? Can you explain in more detail what you're after with examples?

@HonkingGoose
Copy link
Collaborator

I remember that @rarkins worked on merge confidence badges a while back. Renovate may be extended so that you can select what "confidence level" you want for updates. I think we only show the badges, with no way to use the merge confidence data in a packageRule?

https://github.com/whitesource/merge-confidence

@rarkins rarkins added priority-3-medium Default priority, "should be done" but isn't prioritised ahead of others and removed priority-5-triage labels Nov 25, 2022
@HonkingGoose
Copy link
Collaborator

@renovatebot renovatebot locked and limited conversation to collaborators Oct 1, 2023
@rarkins rarkins converted this issue into discussion #24896 Oct 1, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
priority-3-medium Default priority, "should be done" but isn't prioritised ahead of others status:requirements Full requirements are not yet known, so implementation should not be started type:feature Feature (new functionality)
Projects
None yet
Development

No branches or pull requests

4 participants