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
.
- Users can complete the transaction on the customer portal at
- 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 reads0/4000
minutes. - February 28: The group has used
1500
minutes. The count reads1500/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.
Customers Portal side
Subscriptions page
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
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
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
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 onMM/DD/YYY
.Thank you for your business!
Attachment: Purchase invoice.
@ghostium
OP byDescription
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.
-
Feature assurance -
Documentation -
Added to features.yml