Skip to content

Add-on runner minutes for GitLab.com

Overview

Currently, shared CI minutes on GitLab.com are enforced with a hard limit. Once you hit your limit at your particular tier, there's no current path forward.

We want to switch runners to a scalable plan in https://gitlab.com/gitlab-org/gitlab-ee/issues/7446. Once we've implemented this, we should also allow users to breach this limit and be billed on a monthly basis for their additional usage.

Proposal

Allow users to purchase add-on packs of additional minutes that extend the shared runner limit for the relevant namespace.

  • Allow a user to purchase a fixed pack of minutes for a namespace.
    • Users can complete the transaction on the customer portal at customers.gitlab.com.
  • We should bill for minutes at $0.48/hour.
    • Provide an email receipt.
  • Minutes should roll over to subsequent months. If I purchase a pack of minutes and don't use them, they should be available to me until I use the additional minutes.
  • Notify the group owner (for groups) or individual (individual namespaces) when they're about to hit a CI limit, with instructions on how to purchase additional minutes.

Solution

GitLab side

On the product side, we only need to update the Pipelines quota page to reflect additional minutes usage.

Pipelines quota

We add a new progress bar for additional minutes to the group-level 'Pipelines quota' page. The copy will be:

  • Title: "Additional minutes"
  • Description: "Additional minutes are only used once your monthly quota runs out and they roll over month to month"

The additional minute count will show the total available for use this month. This means that every month, the count will be readjusted to remove used minutes. For example:

  • February 15: A group buys 4000 minutes. The count reads 0/4000 minutes.
  • February 28: The group has used 1500 minutes. The count reads 1500/4000 minutes.
  • March 1: The counter reads: 0/2500 minutes.

We also add a Buy additional minutes button to the header of the page that takes users to documentation detailing how to purchase more minutes through the Customers Portal.

pipelines-quota

Customers Portal side
Subscriptions page

subscriptions

In the Subscriptions page we currently show a card for each self-hosted license or GitLab.com subscription the customer has. We will add a new Buy more CI minutes button to .com subscription cards. This leaves less space for the current button so we will change its copy to 'Change linked Group or personal account.

When the user clicks the Buy more CI minutes button, they are taken to the Details page, which is explained below.

The subscription detail table will be used to show how many additional minute packages the customer has purchased. We will change the Users header in the table to Quantity to make it consistent with the new content. We will also change the GitLab Group header to Namespace because subscriptions and minutes can be purchased for personal namespaces, not only groups.

Additional minute packages will be displayed in a new row under the Product name 1,000 CI mins.. All minute packs will be displayed using the same row, no matter if they were purchased in separate transactions.

Order details page

amount

On this page, the user can select how many minute packages they would like to buy. The page consists of a simple panel with a text box to indicate the amount, as well as the price per package.

There is also a help text line with the text:

Minute packs are only used once the quota included in the subscription runs out and they roll over month to month.

Finally, there is a Proceed to checkout button.

Checkout page

checkout

The checkout page will have a table with the following information:

  • Product: 1,000 minute pack
  • Quanitity: X
  • Amount: $8
  • Namespace: namespace in GitLab.com

It will be accompanied by the billing information panel, with a CTA Confirm purchase

Success page

success

After the purchase is completed, the user is taken back to the Subscriptions page, where we add a banner at the top. This is the same approach we currently use for GitLab.com subscriptions, except we will change the copy to:

Thank you for your purchase. The request was processed and your minutes have been applied to GitLab!

Confirmation email

We will use the exact same confirmation email we currently use.

Subject: 'Your payment was successfully processed.'

Body:

Dear customer name,

Thank you for your payment of $X USD that was processed on MM/DD/YYY.

Thank you for your business!

Attachment: Purchase invoice.

OP by @ghostium

Description

Currently CI minutes are linked to the package a user buys. I propose separating those two and enable users to buy CI minutes on-demand.

Proposal

Let users either buy CI minute amount packages or just let them add their CC to let the consumption amount add up to a minimal amount which makes sense in regards of transaction costs.

Users who require more CI minutes then their current plan offers, but do not want/need a larger plan, or if such a plan doesn't even exist, may choose the route to self host their CI runner. This is fine, however some users (me included) don't want to manage an extra machine and go the SaaS route. Gitlab could offer the feature mentioned above, and cater to this group of users.

Feature checklist

Make sure these are completed before closing the issue, with a link to the relevant commit.

Edited by Chris Peressini