Commit f15c5491 authored by Suzanne Selhorn's avatar Suzanne Selhorn

Merge branch 'docs/ci-minutes-ssot-page' into 'master'

Create single source of truth docs for pipeline minutes

See merge request gitlab-org/gitlab!76253
parents 63e0d0f8 85f5d6f9
......@@ -172,7 +172,7 @@ Learn how to install, configure, update, and maintain your GitLab instance.
- [Job artifacts](job_artifacts.md): Enable, disable, and configure job artifacts (a set of files and directories which are outputted by a job when it completes successfully).
- [Job logs](job_logs.md): Information about the job logs.
- [Register runners](../ci/runners/runners_scope.md): Learn how to register and configure runners.
- [Shared runners pipelines quota](../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota): Limit the usage of pipeline minutes for shared runners.
- [Shared runners quota of CI/CD minutes](../ci/pipelines/cicd_minutes.md): Limit the usage of CI/CD minutes for shared runners.
- [Enable or disable Auto DevOps](../topics/autodevops/index.md#enable-or-disable-auto-devops): Enable or disable Auto DevOps for your instance.
## Snippet settings
......
......@@ -802,9 +802,9 @@ Parameters:
| `lfs_enabled` | boolean | no | Enable/disable Large File Storage (LFS) for the projects in this group. |
| `request_access_enabled` | boolean | no | Allow users to request member access. |
| `parent_id` | integer | no | The parent group ID for creating nested group. |
| `default_branch_protection` | integer | no | See [Options for `default_branch_protection`](#options-for-default_branch_protection). Default to the global level default branch protection setting. |
| `shared_runners_minutes_limit` **(PREMIUM SELF)** | integer | no | Pipeline minutes quota for this group (included in plan). Can be `nil` (default; inherit system default), `0` (unlimited) or `> 0` |
| `extra_shared_runners_minutes_limit` **(PREMIUM SELF)** | integer | no | Extra pipeline minutes quota for this group (purchased in addition to the minutes included in the plan). |
| `default_branch_protection` | integer | no | See [Options for `default_branch_protection`](#options-for-default_branch_protection). Default to the global level default branch protection setting. |
| `shared_runners_minutes_limit` **(PREMIUM)** | integer | no | Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be `nil` (default; inherit system default), `0` (unlimited), or `> 0`. |
| `extra_shared_runners_minutes_limit` **(PREMIUM)** | integer | no | Can be set by administrators only. Additional CI/CD minutes for this group. |
### Options for `default_branch_protection`
......@@ -905,8 +905,8 @@ PUT /groups/:id
| `request_access_enabled` | boolean | no | Allow users to request member access. |
| `default_branch_protection` | integer | no | See [Options for `default_branch_protection`](#options-for-default_branch_protection). |
| `file_template_project_id` **(PREMIUM)** | integer | no | The ID of a project to load custom file templates from. |
| `shared_runners_minutes_limit` **(PREMIUM SELF)** | integer | no | Pipeline minutes quota for this group (included in plan). Can be `nil` (default; inherit system default), `0` (unlimited) or `> 0` |
| `extra_shared_runners_minutes_limit` **(PREMIUM SELF)** | integer | no | Extra pipeline minutes quota for this group (purchased in addition to the minutes included in the plan). |
| `shared_runners_minutes_limit` **(PREMIUM)** | integer | no | Can be set by administrators only. Maximum number of monthly CI/CD minutes for this group. Can be `nil` (default; inherit system default), `0` (unlimited), or `> 0`. |
| `extra_shared_runners_minutes_limit` **(PREMIUM)** | integer | no | Can be set by administrators only. Additional CI/CD minutes for this group. |
| `prevent_forking_outside_group` **(PREMIUM)** | boolean | no | When enabled, users can **not** fork projects from this group to external namespaces
| `shared_runners_setting` | string | no | See [Options for `shared_runners_setting`](#options-for-shared_runners_setting). Enable or disable shared runners for a group's subgroups and projects. |
| `prevent_sharing_groups_outside_hierarchy` | boolean | no | See [Prevent group sharing outside the group hierarchy](../user/group/index.md#prevent-group-sharing-outside-the-group-hierarchy). This attribute is only available on top-level groups. [Introduced in GitLab 14.1](https://gitlab.com/gitlab-org/gitlab/-/issues/333721) |
......
......@@ -434,7 +434,7 @@ Parameters:
| `email` | Yes | Email |
| `extern_uid` | No | External UID |
| `external` | No | Flags the user as external - true or false (default) |
| `extra_shared_runners_minutes_limit` | No | Extra pipeline minutes quota for this user (purchased in addition to the minutes included in the plan) **(PREMIUM)** |
| `extra_shared_runners_minutes_limit` **(PREMIUM)** | No | Can be set by administrators only. Additional CI/CD minutes for this user. |
| `force_random_password` | No | Set user password to a random value - true or false (default) |
| `group_id_for_saml` | No | ID of group where SAML has been configured |
| `linkedin` | No | LinkedIn |
......@@ -447,7 +447,7 @@ Parameters:
| `projects_limit` | No | Number of projects user can create |
| `provider` | No | External provider name |
| `reset_password` | No | Send user password reset link - true or false(default) |
| `shared_runners_minutes_limit` | No | Pipeline minutes quota for this user (included in plan). Can be `nil` (default; inherit system default), `0` (unlimited) or `> 0` **(PREMIUM)** |
| `shared_runners_minutes_limit` **(PREMIUM)** | No | Can be set by administrators only. Maximum number of monthly CI/CD minutes for this user. Can be `nil` (default; inherit system default), `0` (unlimited), or `> 0`. |
| `skip_confirmation` | No | Skip confirmation - true or false (default) |
| `skype` | No | Skype ID |
| `theme_id` | No | The GitLab theme for the user (see [the user preference docs](../user/profile/preferences.md#navigation-theme) for more information) |
......@@ -476,7 +476,7 @@ Parameters:
| `email` | No | Email |
| `extern_uid` | No | External UID |
| `external` | No | Flags the user as external - true or false (default) |
| `extra_shared_runners_minutes_limit` | No | Extra pipeline minutes quota for this user (purchased in addition to the minutes included in the plan) **(PREMIUM)** |
| `extra_shared_runners_minutes_limit` **(PREMIUM)** | No | Can be set by administrators only. Additional CI/CD minutes for this user. |
| `group_id_for_saml` | No | ID of group where SAML has been configured |
| `id` | Yes | The ID of the user |
| `linkedin` | No | LinkedIn |
......@@ -489,7 +489,7 @@ Parameters:
| `projects_limit` | No | Limit projects each user can create |
| `provider` | No | External provider name |
| `public_email` | No | The public email of the user (must be already verified) |
| `shared_runners_minutes_limit` | No | Pipeline minutes quota for this user (included in plan). Can be `nil` (default; inherit system default), `0` (unlimited) or `> 0` **(PREMIUM)** |
| `shared_runners_minutes_limit` **(PREMIUM)** | No | Can be set by administrators only. Maximum number of monthly CI/CD minutes for this user. Can be `nil` (default; inherit system default), `0` (unlimited) or `> 0`. |
| `skip_reconfirmation` | No | Skip reconfirmation - true or false (default) |
| `skype` | No | Skype ID |
| `theme_id` | No | The GitLab theme for the user (see [the user preference docs](../user/profile/preferences.md#navigation-theme) for more information) |
......
---
stage: Verify
group: Pipeline Execution
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
type: reference
---
# CI/CD minutes quota **(PREMIUM)**
[Shared runners](../runners/runners_scope.md#shared-runners) are shared with every project and group in a GitLab instance.
When jobs run on shared runners, CI/CD minutes are used.
You can set limits on the number of CI/CD minutes that are used each month.
- On GitLab.com, the quota of CI/CD minutes is set for each [namespace](../../user/group/index.md#namespaces),
and is determined by [your license tier](https://about.gitlab.com/pricing/).
- On self-managed GitLab instances, the quota of CI/CD minutes for each namespace is set by administrators.
In addition to the monthly quota, you can add more CI/CD minutes when needed.
- On GitLab.com, you can [purchase additional CI/CD minutes](#purchase-additional-cicd-minutes).
- On self-managed GitLab instances, administrators can [assign more CI/CD minutes](#set-the-quota-of-cicd-minutes-for-a-specific-namespace).
[Specific runners](../runners/runners_scope.md#specific-runners)
are not subject to a quota of CI/CD minutes.
## Set the quota of CI/CD minutes for all namespaces
> [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
By default, GitLab instances do not have a quota of CI/CD minutes.
The default value for the quota is `0`, which grants unlimited CI/CD minutes.
However, you can change this default value.
Prerequisite:
- You must be a GitLab administrator.
To change the default quota that applies to all namespaces:
1. On the top bar, select **Menu > Admin**.
1. On the left sidebar, select **Settings > CI/CD**.
1. Expand **Continuous Integration and Deployment**.
1. In the **Quota of CI/CD minutes** box, enter the maximum number of CI/CD minutes.
1. Select **Save changes**.
If a quota is already defined for a specific namespace, this value does not change that quota.
## Set the quota of CI/CD minutes for a specific namespace
> [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
You can override the global value and set a quota of CI/CD minutes
for a specific namespace.
Prerequisite:
- You must be a GitLab administrator.
To set a quota of CI/CD minutes for a namespace:
1. On the top bar, select **Menu > Admin**.
1. On the left sidebar, select **Overview > Groups**.
1. For the group you want to update, select **Edit**.
1. In the **Quota of CI/CD minutes** box, enter the maximum number of CI/CD minutes.
1. Select **Save changes**.
You can also use the [update group API](../../api/groups.md#update-group) or the
[update user API](../../api/users.md#user-modification) instead.
NOTE:
You can set a quota of CI/CD minutes for only top-level groups or user namespaces.
If you set a quota for a subgroup, it is not used.
## View CI/CD minutes used by a group
You can view the number of CI/CD minutes being used by a group.
Prerequisite:
- You must have the Owner role for the group.
To view CI/CD minutes being used for your group:
1. On the top bar, select **Menu > Groups** and find your group. The group must not be a subgroup.
1. On the left sidebar, select **Settings > Usage Quotas**.
1. Select the **Pipelines** tab.
![Group CI/CD minutes quota](img/group_cicd_minutes_quota.png)
## View CI/CD minutes used by a personal namespace
You can view the number of CI/CD minutes being used by a personal namespace:
1. On the top bar, in the top right corner, select your avatar.
1. Select **Edit profile**.
1. On the left sidebar, select **Usage Quotas**.
## Purchase additional CI/CD minutes **(FREE SAAS)**
If you're using GitLab SaaS, you can purchase additional packs of CI/CD minutes.
These additional CI/CD minutes:
- Are used only after the monthly quota included in your subscription runs out.
- Are carried over to the next month, if any remain at the end of the month.
- Don't expire unless used up.
If you use more CI/CD minutes than your monthly quota, when you purchase more,
those CI/CD minutes are deducted from your quota. For example, with a GitLab SaaS
Premium license:
- You have `10,000` monthly minutes.
- You purchase an additional `5,000` minutes.
- Your total limit is `15,000` minutes.
If you use `13,000` minutes during the month, the next month your additional minutes become
`2,000`. If you use `9,000` minutes during the month, your additional minutes remain the same.
You can find pricing for additional CI/CD minutes on the
[GitLab Pricing page](https://about.gitlab.com/pricing/).
### Purchase CI/CD minutes for a group **(FREE SAAS)**
You can purchase additional CI/CD minutes for your group.
You cannot transfer purchased CI/CD minutes from one group to another,
so be sure to select the correct group.
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Settings > Usage Quotas**.
1. Select **Buy additional minutes**.
1. Complete the details of the transaction.
After your payment is processed, the additional CI/CD minutes are added to your group
namespace.
### Purchase CI/CD minutes for a personal namespace **(FREE SAAS)**
To purchase additional minutes for your personal namespace:
1. On the top bar, in the top right corner, select your avatar.
1. Select **Edit profile**.
1. On the left sidebar, select **Usage Quotas**.
1. Select **Buy additional minutes**. GitLab redirects you to the Customers Portal.
1. Locate the subscription card that's linked to your personal namespace on GitLab SaaS, select **Buy more CI minutes**,
and complete the details of the transaction.
After your payment is processed, the additional CI/CD minutes are added to your personal
namespace.
## How CI/CD minutes are calculated
CI/CD minutes are calculated based on:
- The duration the job runs.
- The visibility of the projects where the job runs.
GitLab uses this formula to calculate CI/CD minutes consumed by a job:
```plaintext
Job duration * Cost factor
```
- **Job duration**: The time, in seconds, that a job took to run on a shared runner.
It does not include time spent in `created` or `pending` status.
- **Cost factor**: A number based on project visibility.
The number is transformed into minutes and added to the overall quota in the job's top-level namespace.
For example: a user `alice` runs a pipeline under `gitlab-org` namespace. The CI/CD minutes consumed by each job
in the pipeline are added to the overall consumption for `gitlab-org` namespace, not `alice` namespace.
If a pipeline runs for one of `alice`'s personal project, the CI/CD minutes are added to the overall consumption
for `alice` namespace.
### Cost factor
The cost factor for a job running on a shared runner is:
- `0.008` for public projects on GitLab SaaS, if [created 2021-07-17 or later](https://gitlab.com/gitlab-org/gitlab/-/issues/332708).
(For every 125 minutes of job time, you accrue 1 CD/CD minute.)
- `0` for public projects on GitLab self-managed instances, and for GitLab SaaS public projects created before 2021-07-17.
- `1` for internal and private projects.
### Additional costs on GitLab SaaS
On GitLab SaaS, shared runners can have different cost factors depending on the cost involved
in executing the runner. For example, a high spec shared runner could be set to have a cost factor of `2`.
Conversely, a shared runner that executes jobs for public projects could have a low cost factor, like `0.008`.
### Monthly reset of CI/CD minutes
On the first day of each calendar month, the accumulated usage of CI/CD minutes is reset to `0`
for all namespaces that use shared runners.
Usage data for the previous month is kept to show historical view of the consumption over time.
## What happens when you exceed the quota
When the quota of CI/CD minutes is used for the current month, GitLab stops
processing new jobs.
- Any non-running job that should be picked by shared runners is automatically dropped.
- Any job being retried is automatically dropped.
- Any running job can be dropped at any point if the overall namespace usage goes over-quota
by a grace period.
The grace period for running jobs is `1,000` CI/CD minutes.
Jobs on specific runners are not affected by the quota of CI/CD minutes.
### GitLab SaaS usage notifications
On GitLab SaaS an email notification is sent to the namespace owners when:
- The available CI/CD minutes are below 30% of the quota.
- The available CI/CD minutes are below 5% of the quota.
- All CI/CD minutes have been used.
......@@ -257,12 +257,12 @@ WARNING:
Deleting a pipeline expires all pipeline caches, and deletes all related objects,
such as builds, logs, artifacts, and triggers. **This action cannot be undone.**
### Pipeline quotas
### Quotas of CI/CD minutes
Each user has a personal pipeline quota that tracks the usage of shared runners in all personal projects.
Each group has a [usage quota](../../subscriptions/gitlab_com/index.md#ci-pipeline-minutes) that tracks the usage of shared runners for all projects created within the group.
Each group has a [quota of CI/CD minutes](cicd_minutes.md) that tracks the usage of shared runners for all projects created within the group.
When a pipeline is triggered, regardless of who triggered it, the pipeline quota for the project owner's [namespace](../../user/group/index.md#namespaces) is used. In this case, the namespace can be the user or group that owns the project.
When a pipeline is triggered, regardless of who triggered it, the quota of CI/CD minutes for the project owner's [namespace](../../user/group/index.md#namespaces) is used. In this case, the namespace can be the user or group that owns the project.
#### How pipeline duration is calculated
......
......@@ -17,6 +17,6 @@ No configuration is required. Your jobs can run on:
- [Windows runners](build_cloud/windows_build_cloud.md) (beta).
- [macOS runners](build_cloud/macos_build_cloud.md) (beta).
The number of minutes you can use on these runners depends on your
[quota](../../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota),
which depends on your [subscription plan](../../subscriptions/gitlab_com/index.md#ci-pipeline-minutes).
The number of minutes you can use on these runners depends on the
[maximum number of CI/CD minutes](../pipelines/cicd_minutes.md)
in your [subscription plan](https://about.gitlab.com/pricing/).
......@@ -29,12 +29,12 @@ If you are using a self-managed instance of GitLab:
and clicking **Show runner installation instructions**.
These instructions are also available [in the documentation](https://docs.gitlab.com/runner/install/index.html).
- The administrator can also configure a maximum number of shared runner [pipeline minutes for
each group](../../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota).
each group](../pipelines/cicd_minutes.md#set-the-quota-of-cicd-minutes-for-a-specific-namespace).
If you are using GitLab.com:
- You can select from a list of [shared runners that GitLab maintains](index.md).
- The shared runners consume the [pipelines minutes](../../subscriptions/gitlab_com/index.md#ci-pipeline-minutes)
- The shared runners consume the [CI/CD minutes](../pipelines/cicd_minutes.md)
included with your account.
### Enable shared runners
......
......@@ -9,7 +9,7 @@ info: To determine the technical writer assigned to the Stage/Group associated w
SaaS runners on Windows are in [beta](https://about.gitlab.com/handbook/product/gitlab-the-product/#beta)
and shouldn't be used for production workloads.
During this beta period, the [shared runner pipeline quota](../../../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota)
During this beta period, the [shared runner quota for CI/CD minutes](../../pipelines/cicd_minutes.md)
applies for groups and projects in the same manner as Linux runners. This may
change when the beta period ends, as discussed in this [related issue](https://gitlab.com/gitlab-org/gitlab/-/issues/30834).
......
......@@ -169,12 +169,12 @@ We have a few inconsistencies in our codebase that should be refactored.
For example, `CommitStatus` should be `Ci::Job` and `Ci::JobArtifact` should be `Ci::BuildArtifact`.
See [this issue](https://gitlab.com/gitlab-org/gitlab/-/issues/16111) for the full refactoring plan.
## CI Minutes
## CI/CD Minutes
This diagram shows how the [CI minutes](../../subscriptions/gitlab_com/index.md#ci-pipeline-minutes)
This diagram shows how the [CI/CD minutes](../../ci/pipelines/cicd_minutes.md)
feature and its components work.
![CI Minutes architecture](img/ci_minutes.png)
![CI/CD minutes architecture](img/ci_minutes.png)
<!-- Editable diagram available at https://app.diagrams.net/?libs=general;flowchart#G1XjLPvJXbzMofrC3eKRyDEk95clV6ypOb -->
Watch a walkthrough of this feature in details in the video below.
......
......@@ -99,7 +99,7 @@ the tiers are no longer mentioned in GitLab documentation:
- [Mirror with Perforce Helix with Git Fusion](../user/project/repository/mirror/bidirectional.md#mirror-with-perforce-helix-with-git-fusion)
- Runners:
- Run pipelines in the parent project [for merge requests from a forked project](../ci/pipelines/merge_request_pipelines.md#run-pipelines-in-the-parent-project-for-merge-requests-from-a-forked-project)
- [Shared runners pipeline minutes quota](../user/admin_area/settings/continuous_integration.md#shared-runners-pipeline-minutes-quota)
- [Shared runners CI/CD minutes](../ci/pipelines/cicd_minutes.md)
- [Push rules](../push_rules/push_rules.md)
- SAML for self-managed GitLab instance:
- [Administrator groups](../integration/saml.md#administrator-groups)
......
......@@ -15,7 +15,7 @@ You don't need to install anything to use GitLab SaaS, you only need to
- [The number of seats you want](#how-seat-usage-is-determined).
All GitLab SaaS public projects, regardless of the subscription, get access to features in the **Ultimate** tier.
Qualifying open source projects also get 50,000 CI minutes and free access to the **Ultimate** tier
Qualifying open source projects also get 50,000 CI/CD minutes and free access to the **Ultimate** tier
through the [GitLab for Open Source program](https://about.gitlab.com/solutions/open-source/).
## Obtain a GitLab SaaS subscription
......@@ -255,127 +255,18 @@ If you have difficulty during the renewal process, contact the
To change the contact person who manages your subscription,
contact the GitLab [Support team](https://support.gitlab.com/hc/en-us/requests/new?ticket_form_id=360000071293).
## CI pipeline minutes
## CI/CD minutes
CI pipeline minutes are the execution time for your [pipelines](../../ci/pipelines/index.md)
on GitLab shared runners. Each [GitLab SaaS tier](https://about.gitlab.com/pricing/)
includes a monthly quota of CI pipeline minutes for private and public projects in
the namespace:
CI/CD minutes are the execution time for your [pipelines](../../ci/pipelines/index.md)
on GitLab shared runners.
| Plan | CI pipeline minutes |
|----------|---------------------|
| Free | 400 |
| Premium | 10,000 |
| Ultimate | 50,000 |
Refer to [CI/CD minutes](../../ci/pipelines/cicd_minutes.md)
for more information.
The consumption rate for CI pipeline minutes is based on the visibility of the projects:
### Purchase additional CI/CD minutes
- Private projects in the namespace consume pipeline minutes at a rate of 1 CI pipeline minute
per 1 minute of execution time on GitLab shared runners.
- Public projects in:
- Namespaces [created on or after 2021-07-17](https://gitlab.com/gitlab-org/gitlab/-/issues/332708)
consume pipeline minutes at a slower rate, 1 CI pipeline minute per 125 minutes
of execution time on GitLab shared runners. The per-minute rate for public projects
is 0.008 CI pipeline minutes per 1 minute of execution time on GitLab shared runners.
- Namespaces created before 2021-07-17 do not consume CI pipeline minutes.
| Plan | CI pipeline minutes | Maximum **private** project execution time (all namespaces) | Maximum **public** project execution time (namespaces created 2021-07-17 and later) |
|----------|---------------------|-------------------------------------------------------------|-------------------------------------------------------------------------------------|
| Free | 400 | 400 minutes | 50,000 minutes |
| Premium | 10,000 | 10,000 minutes | 1,250,000 minutes |
| Ultimate | 50,000 | 50,000 minutes | 6,250,000 minutes |
Quotas apply to:
- Groups, where the minutes are shared across all members of the group, its
subgroups, and nested projects. To view the group's usage, navigate to the group,
then **Settings > Usage Quotas**.
- Your personal account, where the minutes are available for your personal projects.
To view and buy personal minutes:
1. In the top-right corner, select your avatar.
1. Select **Edit profile**.
1. On the left sidebar, select **[Usage Quotas](https://gitlab.com/-/profile/usage_quotas#pipelines-quota-tab)**.
Only pipeline minutes for GitLab shared runners are restricted. If you have a
specific runner set up for your projects, there is no limit to your build time on GitLab SaaS.
The available quota is reset on the first of each calendar month at midnight UTC.
When the CI minutes are depleted, an email is sent automatically to notify the owner(s)
of the namespace. You can [purchase additional CI minutes](#purchase-additional-ci-minutes),
or upgrade your account to a higher [plan](https://about.gitlab.com/pricing/).
Your own runners can still be used even if you reach your limits.
### Purchase additional CI minutes
If you're using GitLab SaaS, you can purchase additional CI minutes so your
pipelines aren't blocked after you have used all your CI minutes from your
main quota. You can find pricing for additional CI/CD minutes on the
[GitLab Pricing page](https://about.gitlab.com/pricing/). Additional minutes:
- Are only used after the shared quota included in your subscription runs out.
- Roll over month to month.
To purchase additional minutes for your personal namespace:
1. In the top-right corner, select your avatar.
1. Select **Edit profile**.
1. On the left sidebar, select **Usage Quotas**.
1. Select **Buy additional minutes** and GitLab redirects you to the Customers Portal.
1. Locate the subscription card that's linked to your personal namespace on GitLab SaaS, click **Buy more CI minutes**, and complete the details about the transaction.
After we process your payment, the extra CI minutes are synced to your group
namespace.
To confirm the available CI minutes for your personal projects, go to the **Usage Quotas** settings again.
The **Additional minutes** displayed now includes the purchased additional CI
minutes, plus any minutes rolled over from last month.
Be aware that:
- Extra CI minutes assigned to one group cannot be transferred to a different
group.
- If you have used more minutes than your default quota, those minutes are
deducted from your Additional Minutes quota immediately after your purchase of
additional minutes.
### Purchase additional CI minutes on GitLab SaaS
> [Introduced](https://gitlab.com/groups/gitlab-org/-/epics/6574) in GitLab 14.5.
If you're using GitLab SaaS, you can purchase additional CI minutes so your
pipelines aren't blocked after you have used all your CI minutes from your
main quota. You can find pricing for additional CI/CD minutes on the
[GitLab Pricing page](https://about.gitlab.com/pricing/). Additional minutes:
- Are only used after the shared quota included in your subscription runs out.
- Roll over month to month.
To purchase additional minutes for your group on GitLab SaaS:
1. On the top bar, select **Menu > Groups** and find your group.
1. On the left sidebar, select **Settings > Usage Quotas**.
1. Select **Buy additional minutes**.
1. Complete the details about the transaction.
After we process your payment, the extra CI minutes are synced to your group
namespace.
To confirm the available CI minutes, go to your group, and then select
**Settings > Usage Quotas**.
The **Additional minutes** displayed now includes the purchased additional CI
minutes, plus any minutes rolled over from last month.
Be aware that:
- Extra CI minutes assigned to one group cannot be transferred to a different
group.
- If you have used more minutes than your default quota, those minutes are
deducted from your Additional Minutes quota immediately after your purchase of
additional minutes.
You can [purchase additional minutes](../../ci/pipelines/cicd_minutes.md#purchase-additional-cicd-minutes)
for your personal or group namespace.
## Storage subscription
......
......@@ -134,44 +134,9 @@ A new pipeline must run before the latest artifacts can expire and be deleted.
NOTE:
All application settings have a [customizable cache expiry interval](../../../administration/application_settings_cache.md) which can delay the settings affect.
## Shared runners pipeline minutes quota **(PREMIUM SELF)**
## Shared runners CI/CD minutes
> [Moved](https://about.gitlab.com/blog/2021/01/26/new-gitlab-product-subscription-model/) to GitLab Premium in 13.9.
If you have enabled shared runners for your GitLab instance, you can limit their
usage by setting a maximum number of pipeline minutes that a group can use on
shared runners per month. Setting this to `0` (default value) grants
unlimited pipeline minutes. While build limits are stored as minutes, the
counting is done in seconds. Usage resets on the first day of each month.
On GitLab.com, the quota is calculated based on your
[subscription plan](../../../subscriptions/gitlab_com/index.md#ci-pipeline-minutes).
To change the pipelines minutes quota:
1. On the top bar, select **Menu > Admin**.
1. On the left sidebar, select **Settings > CI/CD**.
1. Expand **Continuous Integration and Deployment**.
1. In the **Pipeline minutes quota** box, enter the maximum number of minutes.
1. Click **Save changes** for the changes to take effect.
While the setting in the Admin Area has a global effect, as an administrator you can
also change each group's pipeline minutes quota to override the global value.
1. Navigate to the **Admin Area > Overview > Groups** and hit the **Edit**
button for the group you wish to change the pipeline minutes quota.
1. In the **Pipeline Minutes Quota** box, enter the maximum number of minutes.
1. Click **Save changes** for the changes to take effect.
Once saved, you can see the build quota in the group settings.
The quota can also be viewed in the project settings if shared runners
are enabled.
![Project admin information](img/admin_project_quota_view.png)
You can see an overview of the pipeline minutes quota of all projects of
a group in the **Usage Quotas** page available to the group page settings list.
![Group pipelines quota](img/group_pipelines_quota.png)
As an administrator you can set either a global or namespace-specific limit on the number of [CI/CD minutes](../../../ci/pipelines/cicd_minutes.md) you can use.
## Archive jobs
......
.form-group
= form.label :shared_runners_minutes, _('Pipeline minutes quota'), class: 'label-bold'
= form.label :shared_runners_minutes, _('Quota of CI/CD minutes'), class: 'label-bold'
= form.number_field :shared_runners_minutes, class: 'form-control gl-form-input'
.form-text.text-muted
= _('The maximum number of pipeline minutes that a group can use on shared runners per month. 0 for unlimited.')
= link_to _('What are shared runner pipeline minutes?'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'shared-runners-pipeline-minutes-quota'), target: '_blank'
= _('The maximum number of CI/CD minutes on shared runners that a group can use each month. 0 for unlimited.')
= link_to _('What are CI/CD minutes?'), help_page_path('ci/pipelines/cicd_minutes'), target: '_blank'
......@@ -4,7 +4,7 @@
- if minutes_quota_presenter.display_shared_runners_data?
%li
%span.light= _('Pipeline minutes quota:')
%span.light= _('Quota of CI/CD minutes:')
%strong
= ci_minutes_report(minutes_quota_presenter.monthly_minutes_report)
= link_to sprite_icon('question-o'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'shared-runners-pipeline-minutes-quota'), target: '_blank'
= link_to sprite_icon('question-o'), help_page_path('ci/pipelines/cicd_minutes'), target: '_blank'
......@@ -4,11 +4,11 @@
.form-group.row
.col-sm-2.col-form-label
= form.label :shared_runners_minutes_limit, "Pipeline Minutes Quota"
= form.label :shared_runners_minutes_limit, "Quota of CI/CD minutes"
.col-sm-10
= form.number_field :shared_runners_minutes_limit, class: 'form-control', min: 0
%span.form-text.text-muted#shared_runners_minutes_limit_help_block
Set the maximum number of pipeline minutes that a group can use on shared Runners per month.
The maximum number of CI/CD minutes on shared runners that a group can use each month.
Set 0 for unlimited.
Set empty to inherit the global setting of #{Gitlab::CurrentSettings.shared_runners_minutes}.
= link_to sprite_icon('question-o'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'shared-runners-pipeline-minutes-quota'), target: '_blank'
= link_to sprite_icon('question-o'), help_page_path('ci/pipelines/cicd_minutes'), target: '_blank'
......@@ -11,7 +11,7 @@
%div{ data: { qa_selector: "additional_ci_minutes" } }
= ci_minutes_report(minutes_quota_presenter.purchased_minutes_report)
minutes
= link_to sprite_icon('question-o'), help_page_path('subscriptions/gitlab_com/index', anchor: 'purchase-additional-ci-minutes'), target: '_blank', rel: 'noopener noreferrer'
= link_to sprite_icon('question-o'), help_page_path('ci/pipelines/cicd_minutes', anchor: 'purchase-additional-cicd-minutes-free-saas'), target: '_blank', rel: 'noopener noreferrer'
.col-sm-6.right
#{minutes_quota_presenter.purchased_percent_used}% used
= ci_minutes_progress_bar(minutes_quota_presenter.purchased_percent_used)
......@@ -26,7 +26,7 @@
%div{ data: { qa_selector: "plan_ci_minutes" } }
= ci_minutes_report(minutes_quota_presenter.monthly_minutes_report)
minutes
= link_to sprite_icon('question-o'), help_page_path('user/admin_area/settings/continuous_integration', anchor: 'shared-runners-pipeline-minutes-quota'), target: '_blank', 'aria-label': _('Shared runners help link')
= link_to sprite_icon('question-o'), help_page_path('ci/pipelines/cicd_minutes'), target: '_blank', 'aria-label': _('Shared runners help link')
.col-sm-6.right
- if minutes_quota_presenter.display_minutes_available_data?
......
......@@ -113,7 +113,7 @@ RSpec.describe "Admin::Users", :js do
click_link user.name
expect(page).to have_content('Pipeline minutes quota: 0 / 500')
expect(page).to have_content('Quota of CI/CD minutes: 0 / 500')
end
end
......@@ -127,7 +127,7 @@ RSpec.describe "Admin::Users", :js do
click_link user.name
expect(page).not_to have_content('Pipeline minutes quota:')
expect(page).not_to have_content('Quota of CI/CD minutes:')
end
end
end
......@@ -160,7 +160,7 @@ RSpec.describe "Admin::Users", :js do
click_button "Save changes"
expect(page).to have_content('Pipeline minutes quota: 0 / 500')
expect(page).to have_content('Quota of CI/CD minutes: 0 / 500')
end
end
......
......@@ -18,7 +18,7 @@ RSpec.describe 'CI shared runner settings' do
context 'without global shared runners quota' do
it 'displays ratio with global quota' do
visit_admin_group_path
expect(page).to have_content("Pipeline minutes quota: 400 / Unlimited")
expect(page).to have_content("Quota of CI/CD minutes: 400 / Unlimited")
expect(page).to have_selector('.shared_runners_limit_disabled')
end
end
......@@ -30,21 +30,21 @@ RSpec.describe 'CI shared runner settings' do
it 'displays ratio with global quota' do
visit_admin_group_path
expect(page).to have_content("Pipeline minutes quota: 400 / 500")
expect(page).to have_content("Quota of CI/CD minutes: 400 / 500")
expect(page).to have_selector('.shared_runners_limit_under_quota')
end
it 'displays new ratio with overridden group quota' do
set_group_shared_runners_minutes 300
visit_admin_group_path
expect(page).to have_content("Pipeline minutes quota: 400 / 300")
expect(page).to have_content("Quota of CI/CD minutes: 400 / 300")
expect(page).to have_selector('.shared_runners_limit_over_quota')
end
it 'displays unlimited ratio with overridden group quota' do
set_group_shared_runners_minutes 0
visit_admin_group_path
expect(page).to have_content("Pipeline minutes quota: 400 / Unlimited")
expect(page).to have_content("Quota of CI/CD minutes: 400 / Unlimited")
expect(page).to have_selector('.shared_runners_limit_disabled')
end
end
......
......@@ -25717,12 +25717,6 @@ msgstr ""
msgid "Pipeline durations for the last 30 commits"
msgstr ""
msgid "Pipeline minutes quota"
msgstr ""
msgid "Pipeline minutes quota:"
msgstr ""
msgid "Pipeline ran in fork of project"
msgstr ""
......@@ -28891,6 +28885,12 @@ msgstr ""
msgid "Quickly and easily edit multiple files in your project."
msgstr ""
msgid "Quota of CI/CD minutes"
msgstr ""
msgid "Quota of CI/CD minutes:"
msgstr ""
msgid "README"
msgstr ""
......@@ -35279,7 +35279,7 @@ msgstr ""
msgid "The maximum file size is %{size}."
msgstr ""
msgid "The maximum number of pipeline minutes that a group can use on shared runners per month. 0 for unlimited."
msgid "The maximum number of CI/CD minutes on shared runners that a group can use each month. 0 for unlimited."
msgstr ""
msgid "The maximum number of tags that a single worker accepts for cleanup. If the number of tags goes above this limit, the list of tags to delete is truncated to this number. To remove this limit, set it to 0."
......@@ -39704,6 +39704,9 @@ msgstr ""
msgid "Welcome, %{name}!"
msgstr ""
msgid "What are CI/CD minutes?"
msgstr ""
msgid "What are group audit events?"
msgstr ""
......@@ -39713,9 +39716,6 @@ msgstr ""
msgid "What are project audit events?"
msgstr ""
msgid "What are shared runner pipeline minutes?"
msgstr ""
msgid "What are you searching for?"
msgstr ""
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment