images

module
v0.244.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 19, 2026 License: Apache-2.0

README

Images

This repository is, primarily, a Go library for generating osbuild manifests (more details here). It also has some libraries for uploading artifacts to cloud platforms and Koji. The binaries implemented in cmd/ are for development and testing purposes and not part of the library.

Project

Principles
  1. The image definitions API is internal and can therefore be broken. The blueprint API is the stable API.
  2. Nonsensical manifests should not compile (at the Golang level).
  3. OSBuild units (stages, sources, inputs, mounts, devices) should be directly mapped into Go objects.
  4. Image definitions don’t test distributions that are end-of-life. Respective code-paths should be dropped.
  5. Image definitions need to support the oldest supported target distribution.
Contributing

Please refer to the developer guide to learn about our workflow, code style and more.

See also the local developer documentation for useful information about working with this specific project.

YAML based image definitions

More and more parts of the library are converted to use yaml to define core parts of an image. See this example directory. For local development that just changes the YAML based definitions the library can be forced to use alternative yaml dirs.

E.g. if there is a ./my-yaml/fedora/package-sets.yaml then that can be used via:

$ IMAGE_BUILDER_EXPERIMENTAL=yamldir=./my-yaml image-builder build minimal-raw --distro fedora-42

WARNING: this is an experimental feature and unsupported feature that should never be used in production and may change anytime.

We do plan to eventually stabilize this so that it can be a switch for the image-builder tool but for now this environment option is required.

Build requirements

The build-requirements of the Go library for Fedora and rpm-based distributions can be installed with:

sudo ./test/scripts/install-dependencies

(see also Containerfile )

The minimal dependencies are:

  • go
  • gpgme-devel
  • libvirt-devel

Other dependencies only needed in some cases are:

  • btrfs-progs-devel, device-mapper-devel
    build dependencies for the unit tests and projects that import pkg/container, which even in that case can be skipped using exclude_graphdriver_btrfs and exclude_graphdriver_devicemapper (see bootc-image-builder).
  • krb5-devel
    build dependency for the unit tests and projects that import pkg/upload/koji
  • osbuild-depsolve-dnf
    runtime dependency for the unit tests and projects that import pkg/depsolvednf. or to run cmd/gen-manifests and cmd/build
  • osbuild (and subpackages)
    runtime dependencies for cmd/build.
Repository:
Pull request gating

Each pull request against images starts a series of automated tests. Tests run via GitHub Actions and GitLab CI. Each push to the pull request will launch theses tests automatically.

License:
  • Apache-2.0
  • See LICENSE file for details.

Directories

Path Synopsis
cmd
boot-aws command
boot-azure command
build command
Standalone executable for building a test image.
Standalone executable for building a test image.
gen-manifests command
Standalone executable for generating all test manifests in parallel.
Standalone executable for generating all test manifests in parallel.
list-images command
Standalone executable that lists all supported combinations of distribution, architecture, and image type.
Standalone executable that lists all supported combinations of distribution, architecture, and image type.
data
internal
pkg
bootc
Package bootc handles resolving information from bootc-based containers for generating manifests for bootc-derived images.
Package bootc handles resolving information from bootc-based containers for generating manifests for bootc-derived images.
container
package container implements a client for a container registry.
package container implements a client for a container registry.
crypt
Copied from https://github.com/amoghe/go-crypt/blob/b3e291286513a0c993f7c4dd7060d327d2d56143/crypt_r.go Original sources are under MIT license: The MIT License (MIT)
Copied from https://github.com/amoghe/go-crypt/blob/b3e291286513a0c993f7c4dd7060d327d2d56143/crypt_r.go Original sources are under MIT license: The MIT License (MIT)
depsolvednf
Package depsolvednf is an interface to the osbuild-depsolve-dnf Python script that is packaged with the osbuild project.
Package depsolvednf is an interface to the osbuild-depsolve-dnf Python script that is packaged with the osbuild project.
disk
Package disk contains data types and functions to define and modify disk-related and partition-table-related entities.
Package disk contains data types and functions to define and modify disk-related and partition-table-related entities.
distro/defs
package defs contain the distro definitions used by the "images" library
package defs contain the distro definitions used by the "images" library
experimentalflags
Package experimentalflags provides functionality for reading options defined in an environment variable named IMAGE_BUILDER_EXPERIMENTAL.
Package experimentalflags provides functionality for reading options defined in an environment variable named IMAGE_BUILDER_EXPERIMENTAL.
manifest
Package manifest is used to define an osbuild manifest as a series of pipelines with content.
Package manifest is used to define an osbuild manifest as a series of pipelines with content.
olog
Package olog provides a wrapper around the standard log package.
Package olog provides a wrapper around the standard log package.
osbuild
Package osbuild provides primitives for representing and (un)marshalling OSBuild (schema v2) types.
Package osbuild provides primitives for representing and (un)marshalling OSBuild (schema v2) types.
test

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL