Skip to content

chore: bring images up to date #63

Open
casibbald wants to merge 1 commit intoliquidmetal-dev:mainfrom
microscaler:chore/bring-images-up-to-date
Open

chore: bring images up to date #63
casibbald wants to merge 1 commit intoliquidmetal-dev:mainfrom
microscaler:chore/bring-images-up-to-date

Conversation

@casibbald
Copy link

@casibbald casibbald commented Feb 5, 2026

Summary

This PR brings image naming, workflows, and references in line with the current Liquid Metal setup: registry detection for forks, ARM (experimental) workflows, explicit architecture suffixes on image names, and the move from weaveworks-liquidmetal to liquidmetal-dev.

Successful builds can be found here:


1. Registry detection (fork-friendly)

  • Workflows now push to the repository owner's GHCR by default:
    • REGISTRY=ghcr.io/${{ vars.REGISTRY_OWNER || github.repository_owner }}
  • So forks (e.g. microscaler/image-builder) publish to ghcr.io/microscaler/..., and upstream to ghcr.io/liquidmetal-dev/....
  • Optional repo variable REGISTRY_OWNER overrides the owner (e.g. for a different org).
  • Applied in: kernel-images.yml, kernel-images-manual.yml, capmvm-kubernetes-manual.yml.

2. Kernel workflows and images

  • workflow_dispatch added to Build and release kernel images for manual runs.
  • Kernel image names now include architecture:
    • amd64: firecracker-kernel-amd64, firecracker-kernel-bin-amd64, firecracker-kernel-modules-amd64; cloudhypervisor-kernel-amd64, cloudhypervisor-kernel-bin-amd64, cloudhypervisor-kernel-modules-amd64.
    • arm64 (experimental): firecracker-kernel-arm64, firecracker-kernel-bin-arm64, firecracker-kernel-modules-arm64.
  • New kernel 5.2.21 configs and build for Firecracker (x86 + experimental ARM); Cloud Hypervisor keeps 5.12 and 5.15.12.
  • Firecracker kernel clone URL switched from git:// to https:// for CI.
  • ARM kernel workflow added: .github/workflows/kernel-images-arm.yml (push on experimental/arm/kernel/**, manual dispatch, QEMU + Buildx for linux/arm64).

3. CAPMVM workflows and images

  • CAPMVM image names aligned with architecture:
    • amd64: capmvm-k8s-ubuntu-{20.04|22.04|24.04}-amd64
    • arm64 (experimental): capmvm-k8s-ubuntu-{20.04|22.04|24.04}-arm64
  • ARM CAPMVM workflow added: .github/workflows/capmvm-kubernetes-arm-manual.yml (manual dispatch, same inputs as x86: k8s version, containerd, Ubuntu version).
  • Experimental ARM CAPMVM Dockerfile/Makefile aligned with x86: pkgs.k8s.io repo, KUBERNETES_MAJOR_MINOR / KUBERNETES_FULL_VERSION, package version -1.1, and OS_VERSION for Ubuntu choice.

4. References: weaveworks-liquidmetal → liquidmetal-dev

  • All image and GitHub references updated from weaveworks-liquidmetal to liquidmetal-dev (default REGISTRY, README examples, and links to flintlock, cluster-api-provider-microvm, site, microvm-action-runner).
  • Makefile default REGISTRY is now ghcr.io/liquidmetal-dev where applicable.

Files changed (22)

  • Workflows: kernel-images.yml, kernel-images-manual.yml, new kernel-images-arm.yml, capmvm-kubernetes-manual.yml, new capmvm-kubernetes-arm-manual.yml.
  • Kernel: Makefile (amd64 names), firecracker/base Dockerfile (https), new configs (5.2.21 x86 + ARM, 5.15.12 CH), README.
  • Experimental ARM: kernel Makefile (arm64 names), firecracker base Dockerfile (https), capmvm Dockerfile + Makefile (pkgs.k8s.io, version args), READMEs; github-action-runner Makefile + README.
  • CAPMVM: Makefile (amd64 image name), README.
  • Root README (publishing/registry and REGISTRY_OWNER example).

Copy link
Member

@richardcase richardcase left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for this @casibbald . A few comments.

I have previously experimented with a different way to build the images using the kernel configs from FC and CH directly and then adding additional config options on top, i never quite got it working nicely: https://github.com/liquidmetal-dev/mikrolite-images/tree/main/kernel-k8s-fc
But i do think its a better

version: [ 4.19.215, 5.10.77 ]
version: [ 4.19.215, 5.2.21, 5.10.77 ]
env:
# Push to this repo's GHCR (e.g. ghcr.io/microscaler on a fork, ghcr.io/liquidmetal-dev upstream).
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please remove reference to the microscaler fork.

K8S_FULL_VERSION?=$(K8S_MAJOR_MINOR).14
UBUNTU_VERSION?=22.04
IMAGE_NAME?=$(REGISTRY)/capmvm-k8s-ubuntu-$(UBUNTU_VERSION)
IMAGE_NAME?=$(REGISTRY)/capmvm-k8s-ubuntu-$(UBUNTU_VERSION)-amd64
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we need the ability to overwrite the amd64? Perhaps via passed in ARCH

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually i see there is separate Makefile later for arm :)


FC_KERNEL_VERSIONS ?= 4.19.215 5.10.77 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
CH_KERNEL_VERSIONS ?= 5.12 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
FC_KERNEL_VERSIONS ?= 4.19.215 5.2.21 5.10.77 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to completely rethink these versions now. For firecracker its 5.10 and 6.1 kernels supported now.

FC_KERNEL_VERSIONS ?= 4.19.215 5.10.77 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
CH_KERNEL_VERSIONS ?= 5.12 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
FC_KERNEL_VERSIONS ?= 4.19.215 5.2.21 5.10.77 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
CH_KERNEL_VERSIONS ?= 5.12 5.15.12 # If you update this list, please remember to update the matrix in the kernel-images.yml github action!
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should also take a view of the CH kernel versions.

### Build pipeline notes

- **Firecracker base** clones the kernel from kernel.org over HTTPS (CI-friendly).
- **Builder** image is Ubuntu 20.04; consider moving to 22.04 when updating for long-term support.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We should create an issue for updating to LTS instead of putting it in the README like this.

Workflows push images to the **repository’s GitHub Container Registry** by default:

- **Upstream** (`liquidmetal-dev/image-builder`): images go to `ghcr.io/liquidmetal-dev/...`
- **Forks** (e.g. `microscaler/liquidmetal-image-builder`): images go to `ghcr.io/microscaler/...`
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
- **Forks** (e.g. `microscaler/liquidmetal-image-builder`): images go to `ghcr.io/microscaler/...`
- **Forks** (e.g. `my-fork/liquidmetal-image-builder`): images go to `ghcr.io/my-fork/...`

@@ -0,0 +1,3331 @@
#
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is this based on one of the config files from Firecracker?

(i.e. from here https://github.com/firecracker-microvm/firecracker/tree/main/resources/guest_configs)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants