From Fedora Project Wiki
Warning.png
This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.

Image Assembly Overview

The Env_and_Stacks/Projects/SoftwareComponentPipeline is designed to make it straightforward to automatically produce updated RPMs and RPM repositories from upstream components releases.

However:

  • not all upstream applications (especially web applications) are amenable to being disassembled into component RPMs
  • the high level "application glue code" that combines dependencies into a coherent application typically isn't designed for reuse
  • packaging things as RPMs is very helpful for building Fedora itself, but markedly less so when building things to run *on* Fedora
  • consuming RPMs directly can become a complex "DIY" adventure as different component versions are mixed and matched on the same system

Accordingly, these recommendations cover the approaches offered by Fedora to assemble individual components produced by the Software Component Pipeline into larger binary images for easier consumption.

Base Container Images

  • Inputs: RPMs built in Koji
  • Outputs: Docker container images
  • Build system: Koji

Layered Container Images

  • Inputs: Source-to-image git repos, upstream source packages (built on demand), RPMs built in Koji (official images), RPMs built in COPR (unofficial images), other container images
  • Outputs: Docker container images
  • Build system: Koji (official images), DOPR (unofficial images)

Layered images are notable as they're the recommended means of combining official content from Koji (RPMs, container images) with unofficial content from COPR (RPMs), DOPR (container images), upstream distribution systems (source packages), and version control systems (source-to-image repos).

As the Fedora.next modularisation discussion evolve, there may eventually be official source-to-image repos, allowing some Fedora components to be made available *solely* in container form.

OSTree Images

  • Inputs: RPMs built in Koji
  • Outputs: rpm-ostree trees
  • Build system: Koji

Machine Images

  • Inputs: RPMs built in Koji, container images built in Koji
  • Outputs: machine images (AMI, qcow2, etc)
  • Build system: Koji

Live ISOs

  • Inputs: RPMs built in Koji, container images built in Koji
  • Outputs: Live CD/DVD/USB images
  • Build system: Koji

Installer ISOs

  • Inputs: RPMs built in Koji, container images built in Koji
  • Outputs: Installer CD/DVD/USB images
  • Build system: Koji