Skip to content

Commit 6752920

Browse files
authored
Clarify custom image storage billing in Actions docs (#60231)
1 parent 8ce8fb4 commit 6752920

File tree

4 files changed

+31
-6
lines changed

4 files changed

+31
-6
lines changed

content/actions/concepts/runners/github-hosted-runners.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ Custom images let you start with a {% data variables.product.github %}-provided
9191

9292
Custom images can include repository code, container images, binaries, certificates, and other dependencies to create a consistent build environment across workflows. This helps you gain control over your supply chain. They help reduce setup time, improve build performance, and strengthen security by reducing the surface attack vector on your images. Administrators can also apply policies to manage image versions, retention, and age to meet organizational security and compliance requirements.
9393

94-
Custom images can only be used with larger runners and are billed at the same per-minute rates as those runners. Storage for custom images is billed and metered through {% data variables.product.prodname_actions %} storage. For more information about billing, see [AUTOTITLE](/billing/concepts/product-billing/github-actions).
94+
Custom images can only be used with {% data variables.actions.hosted_runners %}. Jobs that use custom images are billed at the same per-minute rates as those runners. Storage for custom images is billed and metered through {% data variables.product.prodname_actions %} storage. For more information, see [AUTOTITLE](/billing/concepts/product-billing/github-actions#custom-image-storage).
9595

9696
To get started with custom images, see [AUTOTITLE](/actions/how-tos/manage-runners/larger-runners/use-custom-images).
9797

content/actions/how-tos/manage-runners/larger-runners/use-custom-images.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,12 @@ If you specify an older major version in the YAML (for example, version: 1.* whe
123123
> [!NOTE]
124124
> {% data variables.actions.github_hosted_larger_runner %} creation does not support wildcards in image version selection.
125125
126+
## Billing and storage for custom images
127+
128+
Jobs that use custom images are billed at the same per-minute rate as the {% data variables.actions.hosted_runner %} that uses the image. Storage for custom images is billed separately through {% data variables.product.prodname_actions %} storage.
129+
130+
If you rebuild images frequently and retain older versions, your storage usage can grow quickly because each successful workflow job that includes the `snapshot` keyword creates a new image version. For more information, see [AUTOTITLE](/billing/concepts/product-billing/github-actions#custom-image-storage) and [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#custom-images-retention-policies).
131+
126132
## Managing custom images
127133

128134
You can view detailed information about each image, delete unused images or specific versions, and track image versions over time.

content/billing/concepts/product-billing/github-actions.md

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,6 @@ versions:
1717
ghec: '*'
1818
shortTitle: GitHub Actions
1919
contentType: concepts
20-
category:
21-
- Understand product costs
2220
---
2321

2422
## How use of {% data variables.product.prodname_actions %} is measured
@@ -75,6 +73,27 @@ Deleting artifacts reduces your current storage and prevents future charges, but
7573

7674
Your monthly bill converts GB-Hours to GB-Months by dividing by the hours in the month (usually 720 hours for a 30-day month).
7775

76+
### Custom image storage
77+
78+
For {% data variables.actions.github_hosted_larger_runners %}, storage for custom images is billed through {% data variables.product.prodname_actions %} storage.
79+
80+
Custom image storage uses the same hourly accrual model as other {% data variables.product.prodname_actions %} storage. Your bill is based on the amount of image data that is stored over time, measured in GB-Hours.
81+
82+
Storage usage for custom images depends on:
83+
84+
* The size of each image version
85+
* The number of image versions that you retain
86+
* How long each version is stored
87+
88+
Each successful workflow job that includes the `snapshot` keyword creates a new custom image version. Each retained version contributes to your storage usage until the version is deleted or removed by a retention policy. For more information, see [AUTOTITLE](/actions/how-tos/manage-runners/larger-runners/use-custom-images) and [AUTOTITLE](/admin/enforcing-policies/enforcing-policies-for-your-enterprise/enforcing-policies-for-github-actions-in-your-enterprise#custom-images-retention-policies).
89+
90+
Custom image storage is based on retained image data over time, not on the number of times that a runner uses or pulls an existing image.
91+
92+
For example:
93+
94+
* Storing one 150 GB custom image version for 24 hours uses 3,600 GB-Hours.
95+
* Storing four 150 GB versions of the same image for 24 hours uses 14,400 GB-Hours.
96+
7897
### Examples of how usage is measured
7998

8099
* If you run a workflow on a Linux runner and it takes 10 minutes to complete, you'll use 10 minutes of the repository owner's allowance. If the workflow generates a 10 MB artifact, then you'll also use 10 MB of the repository owner's artifact storage allowance.

content/billing/reference/actions-runner-pricing.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,6 @@ versions:
99
contentType: reference
1010
redirect_from:
1111
- /billing/reference/actions-minute-multipliers
12-
category:
13-
- Understand product costs
1412
---
1513

1614
{% data variables.product.github %} rounds the minutes and partial minutes each job uses up to the nearest whole minute.
@@ -69,4 +67,6 @@ category:
6967
* For {% data variables.actions.hosted_runner %}s, there is no additional cost for configurations that assign public static IP addresses to a {% data variables.actions.hosted_runner %}. For more information on {% data variables.actions.hosted_runner %}s, see [AUTOTITLE](/actions/using-github-hosted-runners/using-larger-runners/about-larger-runners).
7068
* Included minutes cannot be used for {% data variables.actions.hosted_runner %}s.
7169
* The {% data variables.actions.hosted_runner %}s are not free for public repositories.
72-
* Custom images can only be used with larger runners and are billed at the same per-minute rates as those runners.
70+
{% ifversion fpt or ghec %}
71+
* Custom images can only be used with {% data variables.actions.hosted_runners %}. Jobs that use custom images are billed at the same per-minute rates as those runners, and storage for custom images is billed separately through {% data variables.product.prodname_actions %} storage based on the amount of stored image data over time. For more information, see [AUTOTITLE](/billing/concepts/product-billing/github-actions#custom-image-storage).
72+
{% endif %}

0 commit comments

Comments
 (0)