A Juju charm that provides the GitHub runner workload embedded snapshot image to the GitHub runner charm. This charm is deployed as a VM and works on top of OpenStack infrastructure.
Like any Juju charm, this charm supports one-line deployment, configuration, integration, scaling, and more. For Charmed GitHub runner image builder, this includes support for configuring:
- Multi-arch
- Multi Ubuntu bases
- Juju/MicroK8s snap channels
- External scripts
For information about how to deploy, integrate, and manage this charm, see the Official CharmHub Documentation.
Deploy GitHub runner image builder with GitHub runners.
You'll need a working OpenStack installation with flavors for the builder VM.
Recommended builder VM resources:
- 2 vCPUs
- 8 GiB RAM
- 20 GiB disk
Minimum accepted builder VM resources:
- 2 vCPUs
- 1 GiB RAM
- 20 GiB disk
Using the recommended resources helps avoid failures during image build and initialization.
Follow MicroStack's single-node starting guide to set up MicroStack.
Follow the tutorial on GitHub runner to deploy the GitHub runner.
Deploy the charm.
juju add-secret openstack-password password=<OPENSTACK-PASSWORD>
OPENSTACK_PASSWORD_SECRET=$(juju show-secret openstack-password --format json | jq -r 'keys[0]')
juju deploy github-runner-image-builder \
--config build-network=<OPENSTACK-NETWORK-NAME> \
--config openstack-auth-url=<OPENSTACK-AUTH-URL> \
--config openstack-password-secret=$OPENSTACK_PASSWORD_SECRET \
--config openstack-project-domain-name=<OPENSTACK-PROJECT-DOMAIN-NAME> \
--config openstack-project-name=<OPENSTACK-PROJECT-NAME> \
--config openstack-user-domain-name=<OPENSTACK-USER-DOMAIN-NAME> \
--config openstack-user-name=<OPENSTACK-USER-NAME>
juju integrate github-runner-image-builder github-runner
After having deployed and integrated the charm with the GitHub runner charm, the image should start to build and be provided to the GitHub runner automatically. The whole process takes around 10 minutes.
- image: The image relation provides the OpenStack image ID to the GitHub runners.
- cos-agent: The COS agent subordinate charm provides observability using the Canonical Observability Stack (COS).
For a full list of integrations, please refer to the Charmhub documentation.
This repository contains the charm in the root directory and the github-runner-image-builder
application in the app directory. Refer to Contributing for more information.