No description
Find a file
Lars Karlitski 7a866aa1c3 osbuild: don't show log output on the terminal
The output makes it hard to see which stage is currently processed and
how to enter the build container. Also, it doesn't include all relevant
logs.

Instead, stream log output into /tmp/output in the build container. Keep
outputting it to stdout, so that osbuild can collect it in the future.
2019-06-12 12:47:04 +02:00
stages osbuild: run further setup in build environment 2019-06-07 21:33:31 +02:00
LICENSE Add LICENSE 2019-04-09 18:18:44 +02:00
osbuild osbuild: don't show log output on the terminal 2019-06-12 12:47:04 +02:00
README.md Update README.md 2019-06-06 17:08:00 +02:00
run-stage osbuild: don't show log output on the terminal 2019-06-12 12:47:04 +02:00

osbuild

A build system for operating system images, working towards an image build pipeline that's more comprehensible, reproducible, and extendable.

Pipelines

The build process for an image is described by a pipeline. Each stage in a pipeline is a program that, given some configuration, modifies a file system tree. Pipelines are defined as JSON files like this one:

{
  "name": "Example Image",
  "pipeline": [
    {
      "name": "io.weldr.dnf",
      "options": {
        "packages": [ "@core", "httpd" ]
      }
    },
    {
      "name": "io.weldr.systemd",
      "options": {
        "enabled_services": [ "httpd" ]
      }
    },
    {
      "name": "io.weldr.qcow2",
      "options": {
        "target": "output.qcow2"
      }
    }
  ]
}

osbuild runs each of the stages in turn, isolating them into mount and pid namespaces. It injects the options object with a tree key pointing to the file system tree and passes that to the stage via its stdin. Each stage has private /tmp and /var/tmp directories that are deleted after the stage is run.

Stages may have side effects: the io.weldr.qcow2 stage in the above example packs the tree into a qcow2 image.

Running

osbuild [--from ARCHIVE] [--save ARCHIVE] PIPELINE

Runs PIPELINE. If --from is given, unpacks its contents (.tar.gz) into the tree before running the first stage. If --save is given, saves the contents of the tree in the given archive.