Skip to main content

Custom Container Images

Import your existing container images from your self-hosted GitHub runners to use them with WarpBuild. This is useful if you are using a custom runner image to run on Kubernetes, for example using actions-runner-controller.

💡 Note: The images referred to in this section are container images. This is distinct from the custom machine images support for VMs (for example, AMIs on AWS).

Advantages​

The primary advantage of importing and using custom container images is that they run on VMs managed by WarpBuild. This makes them more secure, performant, and more cost effective.

  1. Reuse your existing container images but run them on WarpBuild managed VMs.
  2. Rapid autoscaling: unlike the kubernetes autoscaler, WarpBuild managed runners can scale up to 1000s of VMs in a few seconds and scale down instantaneously when the workflow is complete.
  3. No idle resources: there are no kubernetes clusters to manage, no scale-up/down delays, and no idle resources to pay for.
  4. Fully customizable and configurable: you can configure each runner the number of CPU cores, memory, and disk space.
  5. BYOC: you can run the workloads on your own infrastructure, including choice of specific instance types.
  6. More secure, because of VM level isolation between workflows.
  7. More performant, because of no container overheads and no noisy neighbors.

View custom container images

Limitations​

  1. Container images are only supported for x64 architecture.
  2. BYOC isn't supported for container images.

Container Image requirements​

  • The image should have wget present in it.
  • The image should have a non-latest tag attached to it.
  • The image should have dotnet present. This is a dependency required by the GitHub runner application which controls the workflow management. This should be present if your container image is being used on the self-hosted system.

If you are using the actions-runner image as a base. For example, ghcr.io/actions/actions-runner:2.317.0. Then wget wouldn't be present on this system.

For reference, this is a Dockerfile where we add wget on top of ghcr.io/actions/actions-runner:2.317.0.

FROM ghcr.io/actions/actions-runner:2.317.0

# Install wget
RUN sudo apt-get update && sudo apt-get install -y wget

# Clean up to reduce image size
RUN sudo apt-get clean && sudo rm -rf /var/lib/apt/lists/*

Import the image​

  1. If your container image is a private one, add a set of credentials so that warpbuild can pull the image using the connect container registry. In case of private ECR, we'll need to plug in aws credentials which has permissions to pull an image from the ECR repo since ECR generated credentials are short-lived

AWS ECR Credentials Docker Credentials

  1. Create a container image using the import image screen. The latest tags are not allowed here.

Import Container Image

  1. Wait for the image to be available. This takes about 10 minutes to be ready.

  2. Create a custom runner and reference the container image as the base image.

  3. Use the custom runner label in your workflows to run the jobs on this container image.

Pricing​

The cost of using custom container images with WarpBuild has the following charges, apart from the runner cost.

UsagePricing
One time import$1.00
Storage$0.20/GB/month