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.
- Under a feature flag, raise the limit to 100
- Create a few benchmark projects to test out the performance
- If all goes well, then we can raise it to 200
- 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 |
|
| 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
- #216189 (closed)
-
rules:changesrule_spec.rb -
rules:existsrule_spec.rb