Skip to main content

GCP

Connect your GCP project to WarpBuild to run Github Actions runners. Enable Github Actions workflows to run on your own infrastructure and save 90% on your build costs.

Quotas

The runner resources are created in the BYOC GCP project. To function correctly, here are some guidelines on the additional quotas required, per stack.

We assume that the number of concurrently running jobs is $CON, say 1000.

ResourceQuotaNotesURL
CPU$CON * vCPU per JobAdjust for machine type, preemptible, and on-demand instancesAdjust Quota
Persistent Disks$CON * DISK_TBAdjust provisioned IOPS if needed.Adjust Quota
In-use regional external IPv4 addresses3 + $CON1 static IP is required for cloud NAT in a stack.
One static IP is attached to each concurrently running job.
Adjust Quota
Cloud Storage1The same bucket is used for artifact cache, container layer caches, and telemetry data.Adjust Quota
Cloud NAT3One per stackAdjust Quota
Networks1One Network (VPC) is neededAdjust Quota
Subnetworks2One public and private subnetwork is needed per stack.Adjust Quota

The quotas need to be applied to the region where the stack is created. Change the region in the GCP console while editing the quotas.

This is not an exhaustive list. Please reach out to [email protected] for any questions or reach out on chat.

Troubleshooting

Ensure that the bucket name is globally unique. Else, you may see an error like this:

(gcloud.deployment-manager.deployments.create) Error in Operation [operation-1732573114216-627c41d05312d-c4e57059-xxxx]: errors:
- code: RESOURCE_ERROR
location: /deployments/xxxx/resources/<BUCKET_NAME>
message: "{\"ResourceType\":\"storage.v1.bucket\",\"ResourceErrorCode\":\"403\"\
,\"ResourceErrorMessage\":{\"code\":403,\"errors\":[{\"domain\":\"global\",\"\
message\":\"[email protected] does not have storage.buckets.get\
\ access to the Google Cloud Storage bucket. Permission 'storage.buckets.get'\
\ denied on resource (or it may not exist).\",\"reason\":\"forbidden\"}],\"message\"\
:\"[email protected] does not have storage.buckets.get\
\ access to the Google Cloud Storage bucket. Permission 'storage.buckets.get'\
\ denied on resource (or it may not exist).\",\"statusMessage\":\"Forbidden\"\
,\"requestPath\":\"https://storage.googleapis.com/storage/v1/b/<BUCKET_NAME>\"\
,\"httpMethod\":\"GET\",\"suggestion\":\"Consider granting permissions to [email protected]\"\
}}"

Resources: