Skip to content

Group updates across different ecosystems #8126

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

Open
1 task done
lorengordon opened this issue Oct 2, 2023 · 13 comments
Open
1 task done

Group updates across different ecosystems #8126

lorengordon opened this issue Oct 2, 2023 · 13 comments
Assignees
Labels
F: grouped-updates 🎳 Relates to bumping more than one dependency in a single PR Keep Exempt this from being marked by stalebot T: feature-request Requests for new features

Comments

@lorengordon
Copy link

lorengordon commented Oct 2, 2023

Is there an existing issue for this?

  • I have searched the existing issues

Feature description

If I have a project using several package-ecosystem configurations, I would like to use the new groups feature to create a Dependabot PR that includes updates across multiple ecosystems. For example, I may be using Dependabot for docker, terraform, and pip. Currently, I have three separate groups, one for each eco-system, and so I get three separate PRs. Instead, I would like to get a single PR.

@lorengordon lorengordon added the T: feature-request Requests for new features label Oct 2, 2023
@jakecoffman jakecoffman added the F: grouped-updates 🎳 Relates to bumping more than one dependency in a single PR label Oct 9, 2023
@abdulapopoola abdulapopoola pinned this issue Oct 9, 2023
@abdulapopoola
Copy link
Contributor

abdulapopoola commented Oct 9, 2023

Thanks for raising this; the crew is starting to explore this. Tagging @honeyankit and @Nishnha

@deki
Copy link

deki commented Jan 8, 2024

This would be very useful. I have projects with multiple package ecosystem definitions per Maven POM and can't group them right now since #2178 isn't implemented.

@RolfMoleman
Copy link

This would be brilliant for us

@abdulapopoola abdulapopoola unpinned this issue Mar 4, 2024
jim pushed a commit to chicago-tool-library/circulate that referenced this issue Mar 18, 2024
# What it does

Reconfigure dependabot to run weekly instead of daily, and have it batch
updates into a few groups.

# Why it is important

Dependabot has proven to be moderately noisy when running daily, so I
think it's worth trying to see if batching feels easier to manage.

# Implementation notes

* There are a lot of tools for deciding what gets batched together. As I
start I tried splitting out rails and linter updates from others, but
it'll be easy to tweak these as we learn more.
* Notably [dependabot cannot batch updates across package ecosystems
yet](dependabot/dependabot-core#8126), so
rails upgrades will still likely need to be done manually so we sync the
npm and ruby packages.

# Your bandwidth for additional changes to this PR

_Please choose one of the following to help the project maintainers
provide the appropriate level of support:_

- [x] I have the time and interest to make additional changes to this PR
based on feedback.
@jonjanego jonjanego added the Keep Exempt this from being marked by stalebot label May 2, 2024
@sethjeffery
Copy link

sethjeffery commented May 6, 2024

We have a private repo that publishes both a ruby gem and npm package, and would greatly benefit from grouping these together in dependabot PRs for other consuming repos, so that both can be updated at once.

@AArnott
Copy link

AArnott commented Jan 21, 2025

To use terminology that Dependabot itself uses for search engine optimization, what we want here is pull requests that can update a group of dependencies that span package managers.

@jeppester
Copy link

I guess the crew that started exploring this got lost somewhere...

I'm losing my hope that GitHub will improve as a service. There are so many smaller and larger problems that have gone unfixed for years.

@gmile
Copy link

gmile commented Mar 10, 2025

Also interested in seeing support for this land. My use case is this: I have a repository with end-to-end tests written using Playwright. There are 2 components that need to be updated in a single PR:

  1. playwright npm package,
  2. playwright docker image

Today dependabot will open one PR for each, 2 PRs in total. Each PR is not passing the CI, because version of npm Playwright package must match version of Playwright inside docker image.

@robaiken robaiken self-assigned this Apr 11, 2025
@robaiken robaiken marked this as a duplicate of #11451 Apr 11, 2025
@robaiken
Copy link
Contributor

robaiken commented Apr 22, 2025

I've started working on implementing this multi-ecosystem grouping feature for Dependabot!

Here's an example of what the configuration might look like:

version: 2
multi-ecosystem-groups:
  - name: "full-stack-dependencies"
    package-ecosystems:
      - ecosystem: "docker"
        patterns: ["node", "postgres"]
      - ecosystem: "terraform" 
        patterns: ["aws-*"]
      - ecosystem: "pip"
        patterns: ["*"]
       exclude-patterns: ["pandas"]
    labels: ["cross-ecosystem", "dependencies"]
    schedule:
      interval: "weekly"

This would create a single PR containing updates from docker, terraform, and pip ecosystems based on the specified patterns. The PR would be created weekly and automatically labeled. I think that having patterns per ecosystem will make the configuration more flexible, allowing you to precisely target which packages should be grouped together across different ecosystems.

Would this approach work for your use case? I'm collecting feedback before finalizing the implementation, so let me know if you have any thoughts on the configuration format or additional features that would be useful

@robaiken
Copy link
Contributor

robaiken commented May 8, 2025

Hi everyone! Quick update on the multi-ecosystem grouping implementation. We're adding a new package-ecosystems array that allows grouping multiple ecosystems in a single PR:

updates:
  - package-ecosystems:
    - package-ecosystem: "docker"
      patterns: ["node*"]
      directory: "/docker"
    - package-ecosystem: "npm"
      patterns: ["*"]
      directory: "/app"
    schedule:
      interval: "weekly"
    labels: ["cross-ecosystem"]

Key points:

  • Alternative to single package-ecosystem field
  • Pattern is required for each ecosystem in the array
  • Supports all existing configuration flags
  • Creates single PRs for related updates across ecosystems
  • You can use either package-ecosystem OR package-ecosystems (not both).

Would appreciate any feedback on this approach!

@abdulapopoola abdulapopoola pinned this issue May 10, 2025
@AArnott
Copy link

AArnott commented May 13, 2025

I'm a big confused then. How can we control which dependencies get grouped together? Can multiple package-ecosystems objects be specified in order to define the sets?

e.g. How would I express that I want a cross-ecosystem update PR for .NET SDK, but other updates should be individual?

updates:
  # update Dockerfile and global.json reference to .NET SDK version together
  - package-ecosystems:
    - package-ecosystem: "docker"
      patterns: ["mcr.microsoft.com/dotnet/sdk"]
      directory: "/.devcontainer"
    - package-ecosystem: "globalJson" # what would I put here to update global.json's SDK reference?
      patterns: ["sdk"]
      directory: "/"
    schedule:
      interval: "weekly"
    labels: ["dotnet-sdk"]

  # Update package that appears in global.json as an msbuild-sdk as well as in Directory.Packages.props as a package reference
  - package-ecosystems:
    - package-ecosystem: "globalJson"
      patterns: ["MicroBuild.Sdk"]
      directory: "/"
    - package-ecosystem: nuget
      patterns: ["MicroBuild.Sdk"]
      directory: /

  - package-ecosystems:
     # everything else, keep individual rather than grouping as a single PR

@dekimsey
Copy link

Hi everyone! Quick update on the multi-ecosystem grouping implementation. We're adding a new package-ecosystems array that allows grouping multiple ecosystems in a single PR

Thank you for the update! Would this enable us to have one set of configuration on a frequent cadence (daily) and then a separate set of updates for another?

In effect allow one to say, "I want security updates daily, and then regular version-updates monthly" for the same (package-ecosystem, directory, and target-branch). This is currently impossible, but this change suggests it may be possible.

@robaiken
Copy link
Contributor

@dekimsey thanks for the question! Security updates don't run on a schedule, they get created right away when vulnerabilities are found, no matter if you've got daily, weekly, or monthly schedules for your regular updates. So you've already got that separation between security and regular updates since security ones don't wait around for your schedule.

You can also use applies-to: security-updates in your grouping config to control how security updates get grouped, and we're planning to make this work with multi-ecosystem updates too.

Here is more information about security updates

@dekimsey
Copy link

@dekimsey thanks for the question! Security updates don't run on a schedule, they get created right away when vulnerabilities are found, no matter if you've got daily, weekly, or monthly schedules for your regular updates. So you've already got that separation between security and regular updates since security ones don't wait around for your schedule.

Hrm, I'll need to do some digging then. We definitely aren't seeing pull requests get opened when we have code scan findings. Perhaps our existing configuration is incorrect or conflicting. Something for us to look into is more detail!

Regardless, this is solidly off-topic now 😅. Thank you for the information and the pointers, it gives me a thread to pull!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
F: grouped-updates 🎳 Relates to bumping more than one dependency in a single PR Keep Exempt this from being marked by stalebot T: feature-request Requests for new features
Projects
Status: Scoping
Development

No branches or pull requests