-
Notifications
You must be signed in to change notification settings - Fork 2.4k
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
Renovate is stuck in an infinite loop overwriting a ci bot's commits #17528
Comments
Please reduce to a minimal reproduction |
Hi there, Get your issue fixed faster by creating a minimal reproduction. This means a repository dedicated to reproducing this issue with the minimal dependencies and config possible. Before we start working on your issue we need to know exactly what's causing the current behavior. A minimal reproduction helps us with this. To get started, please read our guide on creating a minimal reproduction. We may close the issue if you, or someone else, haven't created a minimal reproduction within two weeks. If you need more time, or are stuck, please ask for help or more time in a comment. Good luck, The Renovate team |
|
I think |
Thanks for following up on this issue!
Sorry, I was under the impression that this might be minimal enough by only having the 1 dependency and no custom rules but I will continue to refactor it today and will let you know once I'm done.
Thanks, I will look into this as I was not aware of the
I'm aware of the fact that renovate does not expect its commits to be changed, but fixup commits are separate commits. The command |
I've I tried a few different tests to hopefully help narrow down the issue. I've summarized my findings here, and there are also instructions for reproduction in the readme. If there is anything else I can do to help, please let me know and I'd be happy to. I tried a few different tests. Each one performs the same change (adding an empty file). Changing from using a fixup commit message to a different commit message does not change the observed behavior. This seems to mean that renovate overwrites changes by
|
When a git author is ignored, the bot treats the branch as "unmodified", meaning it's ok to automatically rebase. If the branch were modified then all rebaseWhen= would be irrelevant. Then, Renovate looks at the HEAD^1 commit to see if it matches the base branch SHA and if it does not then uses that as a shortcut that it's behind base branch. For now I'm going to say that rebaseWhen=behind-base-branch is not compatible with ignored commits on top of Renovate's. It's not an impossible problem to solve, but would require some changes to our logic, including cache logic. |
I’ve also noticed a similar behavior. Using a self-hosted renovate instance on a self-hosted gitlab instance. I’ve configured |
My understanding:
Thus But in reality, we are rebasing the branch which. The reason is a fault in caching logic which leads to Reason why
So it changes with a new commit to the update branch, thus the infinite loops🙃 We needed to use 'baseBranchSha' however due to similar names, I became confused and used A fix is on the way.✌ Reproduction: RahulGautamSingh-testing/reporoduce-17528#1 |
🎉 This issue has been resolved in version 32.219.0 🎉 The release is available on:
Your semantic-release bot 📦🚀 |
How are you running Renovate?
Mend Renovate hosted app on github.com
If you're self-hosting Renovate, tell us what version of Renovate you run.
No response
If you're self-hosting Renovate, select which platform you are using.
No response
If you're self-hosting Renovate, tell us what version of the platform you run.
No response
Was this something which used to work for you, and then stopped?
It used to work, and then stopped
Describe the bug
Renovate is stuck in an infinite loop overwriting a ci bot's fixup commits. This started happening sometime in the past 2 months (the configuration has not been changed since). So far I have only observed this with python packages, but I do not have a similar procedure for other dependencies.
The process is something like this:
x
and commits to the repository, which triggers the first ci run.pip-compile
, so before running builds and tests, the ci agent runs a script to update the lockfiles. This takes care of resolving dependency changes ofx
. If any changes were made, the ci bot commits them as a fixup commit (git commit --fixup HEAD
) and pushes it to GitHub.The ci bot is registered as a
gitIgnoredAuthor
, but in the past renovate would only overwrite the changes if themain
branch was updated (I haverebaseWhen
asbehind-base-branch
). Currently, every time the ci bot commits a change renovate seems to overwrite it the next time it runs. This means the repository update process is effectively stuck in an infinite loop. I'm not sure exactly what triggers this behavior and it's been a while since it worked, but it seems to have been around the same time renovate changed email names from[email protected]
to29139614+renovate[bot]@users.noreply.github.com
. I recall having to manually rebase the existing branches as they were marked as modified.I've provided debug logs from a minimal reproduction repository, which is publicly available on GitHub. The repository contains one example package that causes this issue, all others have been removed or disabled. There is also a public Buildkite available for reference.
Relevant debug logs
Logs
Have you created a minimal reproduction repository?
I have linked to a minimal reproduction repository in the bug description
The text was updated successfully, but these errors were encountered: