-
-
Notifications
You must be signed in to change notification settings - Fork 4.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
(Enhance) dependency update process #27442
Comments
cc @nextcloud/server for some more feedback/discussion on this |
Some things have been sorted in the meantime, either bot-wise or because I have a better understanding how things work. It's now basically two things that may be great to automate dependency bumps as much as possible:
|
Hi @MichaIng !
We will discuss this more in-dept in the upcoming weeks 😉 |
Indeed, I do also benefit from this, when there is no need to install a development stack for testing a branch 🙂. Another argument is that many CI/CD tests need the building step as well when the bundles are gone. Most drone tests currently do the clone only, so a drone run would be significantly heavier, I guess. On the other hand, without bundles, no additional compile bot call is needed and hence 1-2 drone calls less on every PR opened/rebased where re-compiling is need. In this case it makes sense to wait for the outcome of your internal discussion before putting any efforts into the bots, which (the efforts, not the bots) may become obsolete. |
Currently, the compile actions take > 10 minutes. I think this would lengthen the drone checks by far too much to be applicable. If there was a single clone + compile step per drone run only, then probably, but currently this would mean ~70 times 10 minutes additional processing time, assuming that the drone takes similarly long then the GitHub action runners. |
We also need to improve the compile build. |
Some ideas about how to make live easier with compiled js are also discussed here: nextcloud/.github#28 |
This is done btw, building server is muuuch faster! |
Indeed. The only left thing I have in mind, is when dependabot PRs/commits would trigger the compile command automatically, so that there is a chance to have it merge automatically even when the dependency chance causes actual JavaScript changes, given no CI errors, of course. But it implies some issues:
|
Would it be feasible to use app build artifacts as the source for the server build? That way compiling the assets could still be the responsibility of the app itself - but it would not have to keep them in the git repo at all times. In addition further steps such as removing unnecessary files or signing could be part of the packaging of the app before it's included in the server. |
Hey guys, not sure if a meta discussion is right here, but I couldn't find a better matching sub forum either. Sorry for the long text, I hope to understand things a little better and probably I'm then able to effectively help bots finishing their job during calm night hours or so 😄.
To fix CI/CD tests for a PR of mine, I reviewed them a bit, compared results with other PRs to verify whether a failure is caused by my changes or not, and indeed some checks were solved by a rebase onto current master.
I then noticed that a lot of
dependabot
PRs hang as well on such "formal" check failures, while the bot reports 100% compatibility,nextcloud-bot
requested a merge (what is actually the trigger for that?) and approved it together withgithub-actions
bot, so that it could have been merged automatically without human interaction, if the CI/CD tests were gone through. I played a bit with the bots PRs and indeed in some cases a simply rebase request solved it and hence triggered an automated merge, so far so good.Now there are some other possible issues which may delay or break those automated dependency bumps, also for security-related ones, being open for months. Aside of the fact that the related security patch is then missing, it also accumulated a long list of open PRs, making it difficult to keep human-made PRs in view, which are moved back page by page.
One commonly failing check is the one for JavaScript build changes. From what I understand, this is as the repository does not only contain source code, but compiled JavaScript as well. So when a Node module is bumped, which has an effect on any of these scripts, a re-build within the test leads to changed files and then we get something like this:
To solve this, as far as I understand,
/compile amend /
can be done to trigger a rebuild and amend bynpmbuildbot-nextcloud
. The issue then is thatdependabot
denies to further handle the PR, as it has been modified by someone/something else. So a manual merge is required then.dependabot
to auto-merge requests which were modified bynpmbuildbot-nextcloud
, as long as all tests went through, of course?EDIT: In the meantime, dependabot is able to auto-merge PRs after the compile bot did its job, given all checks passed and two approvals.
And then there isEDIT: Disabled in the meantime.dependabot-preview
, which is still opening PRs (at least it did 1.5 days ago), but is now not able to further deal with them anymore, so all it's PRs need to be in case rebased or merged manually. Open PRs by it blockdependabot
(non-preview) from opening own ones, as the branch it would create does already exist. As the PR is only handled by the bot (version) that opened it, I guessdependabot-preview
should be disabled, and all it's PRs either closed (to have them re-opened bydependabot
) or manually reviewed and merged. This is where most security dependency bumps are hold a long time, like #26730.Then another minor issue with the drone Selenium acceptance tests:All logs are spammed with these errors, while it seems to not affect the test results. I just recognised as I had a look into the long taking ones, and thought that this might be the reason.EDIT: In the meantime I think I understand the tests better and Selenium is just running as a provider for the actual tests and prints the above warning on every actual test scenario, right?
And generally: While the GitHub tests are for free (?), the drone has some limit, doesn't it? I mean not only for concurrent tests but also overall tests in a certain time range, so that commits/pushes shouldn't be spammed (anyway)? I see the drone sometimes
Waiting for status to be reported
, but sometimes it starts regardless 🤔.The text was updated successfully, but these errors were encountered: