Skip to content

feat(ubuntu): add Ubuntu 26.04 LTS (Resolute Raccoon) support#512

Merged
arodage merged 7 commits intomainfrom
feature/ubuntu26-support
Apr 16, 2026
Merged

feat(ubuntu): add Ubuntu 26.04 LTS (Resolute Raccoon) support#512
arodage merged 7 commits intomainfrom
feature/ubuntu26-support

Conversation

@arodage
Copy link
Copy Markdown
Contributor

@arodage arodage commented Apr 10, 2026

Merge Checklist

All boxes should be checked before merging the PR

  • The changes in the PR have been built and tested
  • Documentation has been updated to reflect the changes (or no doc update needed)
  • Ready to merge

Description

Add Ubuntu 26.04 (Plucky Puffin) support to os-image-composer, enabling image builds for the upcoming Ubuntu release.

Changes:

  • Fix hardcoded "ubuntu24" dist in ubuntu provider's loadRepoConfig() to accept dist as a parameter, matching azl/emt/rcd provider patterns
  • Create config/osv/ubuntu/ubuntu26/ directory tree with config.yml, chrootenv configs, provider repo configs (plucky codename), default image configs, and additional files
  • Add ubuntu26 to dist enum in os-config.schema.json
  • Add ubuntu OS→dist constraint (ubuntu24, ubuntu26) in os-image-template.schema.json
  • Add ubuntu entries to GetProviderName() and GetDistroVersion() maps in config.go
  • Add ubuntu26-x86_64-minimal-raw.yml example image template
  • Add ubuntu26 test cases for provider init, name, and repo config loading
  • Add ubuntu24/ubuntu26 entries to TestAllSupportedProviders config test
  • Update README.md, release-notes.md, and templates documentation

Any Newly Introduced Dependencies

None.

How Has This Been Tested?

  • Unit tests: go test ./... — all pass including new ubuntu26 test cases
  • Build verification: go build ./... and go vet ./... — clean
  • Image build: Successfully built a minimal raw image using ubuntu26-x86_64-minimal-raw.yml template (produced .raw.gz, .vhdx, and SPDX SBOM)
  • Boot test: Booted the generated image in QEMU (UEFI/OVMF) — reached login prompt successfully (Ubuntu 25.04 kernel 6.14.0-37-generic)

- Fix hardcoded dist in ubuntu provider's loadRepoConfig() to accept
  dist as a parameter, matching azl/emt/rcd provider patterns
- Create config/osv/ubuntu/ubuntu26/ directory tree with config.yml,
  chrootenv configs, provider repo configs (plucky codename), default
  image configs, and additional files
- Add ubuntu26 to dist enum in os-config.schema.json
- Add ubuntu OS->dist constraint (ubuntu24, ubuntu26) in
  os-image-template.schema.json
- Add ubuntu entries to GetProviderName() and GetDistroVersion() maps
  in config.go
- Add ubuntu26-x86_64-minimal-raw.yml example image template
- Add ubuntu26 test cases for provider init, name, and repo config
- Add ubuntu24/ubuntu26 to TestAllSupportedProviders config test
- Update README.md, release-notes.md, and templates documentation
@arodage arodage requested review from a team as code owners April 10, 2026 09:22
Copilot AI review requested due to automatic review settings April 10, 2026 09:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new Ubuntu distro variant (ubuntu26) across config, schema, docs, and the Ubuntu provider so os-image-composer can target an additional Ubuntu release.

Changes:

  • Updates Ubuntu provider repo loading to use the dist parameter (instead of a hardcoded ubuntu24) and adds ubuntu26 provider tests.
  • Introduces config/osv/ubuntu/ubuntu26/ defaults (repo configs, chroot env configs, default image configs, additional files) plus an example ubuntu26 template.
  • Extends schemas/docs and config mappings to recognize ubuntu26.

Reviewed changes

Copilot reviewed 25 out of 25 changed files in this pull request and generated 6 comments.

Show a summary per file
File Description
README.md Advertises ubuntu26 as a supported OS/dist combination.
internal/provider/ubuntu/ubuntu.go Passes dist through to centralized repo config loading.
internal/provider/ubuntu/ubuntu_test.go Adds/updates tests to cover ubuntu26 init/name/repo loading.
internal/config/schema/os-image-template.schema.json Constrains ubuntu target to ubuntu24/ubuntu26.
internal/config/schema/os-config.schema.json Adds ubuntu26 to the dist enum.
internal/config/config.go Adds ubuntu24/ubuntu26 entries to provider/version maps.
internal/config/config_test.go Extends supported-provider test cases for ubuntu24/ubuntu26.
image-templates/ubuntu26-x86_64-minimal-raw.yml Adds an example user template targeting ubuntu26.
docs/release-notes.md Mentions Ubuntu 26.04 support (currently placed under Known Issues/Opens).
docs/architecture/os-image-composer-templates.md Documents ubuntu dist values as ubuntu24/ubuntu26.
config/osv/ubuntu/ubuntu26/providerconfigs/repo.yml Adds base repo definition for ubuntu26.
config/osv/ubuntu/ubuntu26/providerconfigs/amd64_repo.yml Adds amd64 multi-repo configuration for ubuntu26.
config/osv/ubuntu/ubuntu26/providerconfigs/arm64_repo.yml Adds arm64 multi-repo configuration for ubuntu26.
config/osv/ubuntu/ubuntu26/imageconfigs/defaultconfigs/default-raw-x86_64.yml Adds ubuntu26 x86_64 raw defaults.
config/osv/ubuntu/ubuntu26/imageconfigs/defaultconfigs/default-raw-aarch64.yml Adds ubuntu26 aarch64 raw defaults.
config/osv/ubuntu/ubuntu26/imageconfigs/defaultconfigs/default-iso-x86_64.yml Adds ubuntu26 x86_64 ISO defaults.
config/osv/ubuntu/ubuntu26/imageconfigs/defaultconfigs/default-initrd-x86_64.yml Adds ubuntu26 x86_64 initrd defaults.
config/osv/ubuntu/ubuntu26/imageconfigs/additionalfiles/ubuntu-plucky.list Adds apt sources list used by defaults.
config/osv/ubuntu/ubuntu26/imageconfigs/additionalfiles/serial-getty@.service Adds service override for serial getty in initrd/ISO flows.
config/osv/ubuntu/ubuntu26/imageconfigs/additionalfiles/getty@.service Adds service override for getty in initrd/ISO flows.
config/osv/ubuntu/ubuntu26/imageconfigs/additionalfiles/dhcp.network Adds systemd-networkd DHCP config.
config/osv/ubuntu/ubuntu26/config.yml Adds OSV config entries for ubuntu26 (x86_64/aarch64).
config/osv/ubuntu/ubuntu26/chrootenvconfigs/local.list Adds local apt repo list (cache repo) for chroot env.
config/osv/ubuntu/ubuntu26/chrootenvconfigs/chrootenv_x86_64.yml Adds essential/chroot packages for ubuntu26 x86_64.
config/osv/ubuntu/ubuntu26/chrootenvconfigs/chrootenv_aarch64.yml Adds essential/chroot packages for ubuntu26 aarch64.

Comment thread config/osv/ubuntu/ubuntu26/providerconfigs/amd64_repo.yml Outdated
Comment thread config/osv/ubuntu/ubuntu26/providerconfigs/arm64_repo.yml Outdated
Comment thread config/osv/ubuntu/ubuntu26/imageconfigs/additionalfiles/ubuntu-plucky.list Outdated
Comment thread docs/release-notes.md Outdated
Comment thread config/osv/ubuntu/ubuntu26/providerconfigs/repo.yml Outdated
Comment thread config/osv/ubuntu/ubuntu26/imageconfigs/defaultconfigs/default-raw-x86_64.yml Outdated
Replace plucky (25.04) codename references with resolute (26.04 LTS)
across all ubuntu26 config files:
- Update repo configs (repo.yml, amd64_repo.yml, arm64_repo.yml)
- Rename ubuntu-plucky.list to ubuntu-resolute.list
- Update all default image configs referencing the sources list
- Fix release-notes.md codename (Resolute Rattlesnake, not Plucky Puffin)

Addresses Copilot review comments on PR #512.
@arodage arodage changed the title feat(ubuntu): add Ubuntu 26.04 (Plucky Puffin) support feat(ubuntu): add Ubuntu 26.04 LTS (Resolute Rattlesnake) support Apr 10, 2026
@arodage arodage changed the title feat(ubuntu): add Ubuntu 26.04 LTS (Resolute Rattlesnake) support feat(ubuntu): add Ubuntu 26.04 LTS (Resolute Raccoon) support Apr 10, 2026
Copy link
Copy Markdown
Contributor

@samueltaripin samueltaripin left a comment

Choose a reason for hiding this comment

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

LGTM

@arodage arodage merged commit 9ffb1b7 into main Apr 16, 2026
35 checks passed
@arodage arodage deleted the feature/ubuntu26-support branch April 16, 2026 14:50
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.

4 participants