Skip to content

MVC: Configure CI/CD Limit by project

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

Release notes

Problem

As a namespace owner with multiple projects, I want to restrict/set the CI/CD Minutes each project can use, so I don't waste minutes on low value projects.

Intended users

User experience goal

Users should be able to set a limit for the usage/consumption or resources in the projects they own to avoid running out of resources.

Proposal

Open questions

  • What text is displayed for self managed customers when minute quota is set/reached? - asked in Design 3, point 3.

General rules:

  • If no limits are set usage is a free for all, a single project can use all the CI Minutes before any other project
  • Namespace Owners can set Minutes by project (type in project name, set limit)
    • The project limit can be set higher than the namespace quota.
    • The minimum of the quota and limit should be used when checking if minutes are available.
    • In this iteration we will not validate the set limit is lower than namespace quota when setting. This can be done in the future with a UX warning, but should not be prevented.
  • Projects should not start new pipelines after limit (or quota, whichever is lower) is hit
  • Admins can see how many minutes are allocated to each project with a limit set.

User flow 1: Adding limit to a project: #357760[project-ci-cd-quota-3.png] and #357760[project-ci-cd-quota-4.png]

  • Go to the tab Projects without CI/CD limit and click on Add CI/CD limit against the concerned project to add a limit for CI/CD minutes consumption.
  • Update the limit

User flow 2: Editing defined limit for a project #357760[project-ci-cd-quota-1.png] and #357760[project-ci-cd-quota-2.png]

  • Go to the tab Projects with CI/CD quota and click on Edit button
  • Edit the limit or remove the limit

User flow 3: When a project has exceeded the set limit and a user is attempting to run a pipeline

  • User would see the banner #357760[Alert.png] on the Run pipeline page and the Pipeline index page.

Not included in MVC / Future iterations

  • Validation of the input data #366927
  • Edge cases of mixed group/project limit both being set - setting precedent will need to be a fast follow issue.
  • Historical Tracking of limit vs. actual usage
  • Bulk setting/clearing
  • Default limit applied to new projects
    • Users can set a default limit so all existing projects and new projects can go up to a single value
      • For example set the limit at 1000 so all projects already created / newly created will respect that value.
      • Once the total limit is used no project can start new pipelines.
  • Buffers (pipelines can finish after hitting limit, pipelines can run up to x minutes after hitting limit, etc.)
  • UI to display which of the limit or the quota has been hit.

Permissions and Security

Documentation

Availability & Testing

Available Tier

Feature Usage Metrics

Set-up instrumentation for this feature, issue TBD

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

What is the type of buyer?

Is this a cross-stage feature?

Yes, with ~"group::fulfillment"

What is the competitive advantage or differentiation for this feature?

Links / references

This page may contain information related to upcoming products, features and functionality. It is important to note that the information presented is for informational purposes only, so please do not rely on the information for purchasing or planning purposes. Just like with all projects, the items mentioned on the page are subject to change or delay, and the development, release, and timing of any products, features, or functionality remain at the sole discretion of GitLab Inc.

Edited by 🤖 GitLab Bot 🤖