Backend: Permit rules:changes and rules:exists lists to be longer than 50 elements

Everyone can contribute. Help move this issue forward while earning points, leveling up and collecting rewards.

Problem to solve

We manage a monorepo with a long list of files and directories that may impact a particular component. At least transitionally, we would like to be able to control pipeline job inclusion by maintaining a precise list of these files and directories.

If this list is longer than 50 elements, then GitLab fails with an (incorrectly-worded) error about the number of elements being too many. We feel like the limit of 50 is arbitrary and we'd like to be able to either configure the limit or see it raised to a larger number.

Intended users

User experience goal

The user should be able to configure a pipeline that meets their goals for job inclusion/exclusion, even with large projects and monorepos.

Proposal

I'd propose raising the limit to some much higher number (first to 100 and then to 200?), or at least making the limit configurable so that on-prem administrators can select a limit they are comfortable with. The configuration aspect would be handled as a separate issue related to this issue.

  1. Under a feature flag, raise the limit to 100
  2. Create a few benchmark projects to test out the performance
  3. If all goes well, then we can raise it to 200
  4. Repeat step 2

Further details

We are an on-prem Premium customer. We have a monorepo, with third-party dependencies for all of our code also checked in alongside our code. We have an M:N relationship between folders and 'products', and want to toggle job inclusion based on file changes in any of the folders involved for a product.

Our current solution is to include jobs if anything in our third-party area changes, but this causes jobs to be included when we would prefer for them not to be.

Permissions and Security

Implementation Table

Group Issue Link
backend 👈 You are here
frontend backend #367561

Documentation

Availability & Testing

What does success look like, and how can we measure that?

What is the type of buyer?

Is this a cross-stage feature?

Links / references

Edited by 🤖 GitLab Bot 🤖