-
Notifications
You must be signed in to change notification settings - Fork 10.2k
Open
Labels
area/securityarea/toolingpriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.Important over the long term, but may not be staffed and/or may need multiple releases to complete.type/feature
Description
What would you like to be added?
The current dependency management process involves a lot of manual intervention. There have been some attempts at improving it, including updating the update_deps.sh script, trying out different dependabot configurations, and evaluating other tools besides dependabot.
I want to formalize the work and have a central place to discuss alternatives, pros, and cons.
Possible approaches
- Do nothing / keep dependency management as it is right now. As stated before, the current process requires a lot of manual intervention, and the toil is high. The time to create the weekly PR and merge it keeps sliding into later in the week. There are times in which by human error, the commits are not properly bumping the dependencies.
- Improve dependabot configuration (so far, I've tested the following options):
- Use the new
directoriesproperty: The result of this is multiple pull requests for the same dependency across all of the submodules where it is present. Although we (@jmhbnz and I) thought this was going to be the silver bullet, in the end, it doesn't work as we expected. Enabling this will just add noise to our repository, as we still need to create a PR to bump dependencies manually. See the following example ofgo.opentelemetry.io/otel/tracein my fork: build(deps): bump go.opentelemetry.io/otel/trace from 1.30.0 to 1.32.0 in /tests ivanvc/etcd#410 build(deps): bump go.opentelemetry.io/otel/trace from 1.30.0 to 1.32.0 in /server ivanvc/etcd#406 build(deps): bump go.opentelemetry.io/otel/trace from 1.30.0 to 1.32.0 in /etcdutl ivanvc/etcd#390 build(deps): bump go.opentelemetry.io/otel/trace from 1.30.0 to 1.32.0 ivanvc/etcd#386. - Use the
directoriesproperty andgroups. Although this looked promising, as it creates a single pull request with all the weekly dependencies, the issues that I find are: 1. it creates a single commit for the whole group (rather than one per dependency bumped), 2. it doesn't rungo mod tidy, and it breaks our CI. See an example in my fork: build(deps): bump the weekly-updates group across 12 directories with 70 updates ivanvc/etcd#265 (in the files changed and anygo.sumfile, it's clear that it is not tidying them).
- Use the new
- Replace dependabot with renovatebot. I noticed that several projects on board for dependabot's
directoriesbeta feature moved to renovate. The immediate issue is that we would need a new GitHub application installed for our GitHub organization. This is not the silver bullet but may help decrease the effort. I tested some configurations in my fork:- One pull request per dependency bump: This would be similar to what we have right now, but it bumps the dependency across all submodules (and tides them). This will be a minimal improvement, as we can merge and close these PRs without the manual step to generate a grouped PR. Refer to an example in my fork: chore(deps): update module golang.org/x/crypto to v0.29.0 - abandoned ivanvc/etcd#435
- Grouped pull request: This doesn't work as expected. It's similar to dependabot's approach (single commit for all bumps), although the community seems interested in having multiple commits (Support multiple commits per branch/PR renovatebot/renovate#7288). An example of this configuration in my fork: fix(deps): update gomod ivanvc/etcd#442
- A wild idea would be to write our own automation, but I think it would be less than ideal as we'd need to maintain another project.
I lean towards 3i (renovate + one pull request per dependency), which would be one small step to improve the process. But I want to open the topic for discussion.
cc. @ArkaSaha30
Why is this needed?
To decrease the toil of keeping dependencies up to date.
jmhbnz, pl-jankowskimichal and p12ticArkaSaha30
Metadata
Metadata
Assignees
Labels
area/securityarea/toolingpriority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.Important over the long term, but may not be staffed and/or may need multiple releases to complete.type/feature