No description
Find a file
Martin Sehnoutka d975effc42 improve vagrant test and its documentation
RPM packages are now kept in output directory after build so that we
know exactly which packages to copy to the test. The test directory now
contains special directory for RPMs. Fedora developer portal is
referenced from README file.
2019-07-25 12:46:53 +02:00
assemblers Assembler: no longer mount devtmpfs in the container 2019-07-19 00:51:12 +02:00
osbuild osbuild: add -l/--libdir parameter 2019-07-24 12:55:48 +02:00
samples osbuild-run: generate /etc/pki/tls/certs/ca-bundle.crt 2019-07-19 13:31:49 +02:00
stages fix warnings generated by pylint 2019-07-17 13:08:22 +02:00
test improve vagrant test and its documentation 2019-07-25 12:46:53 +02:00
.gitignore improve vagrant test and its documentation 2019-07-25 12:46:53 +02:00
.pylintrc pylint: disable too-many-arguments rule 2019-07-24 12:55:48 +02:00
.travis.yml add pylint and travis CI configuration 2019-07-17 13:08:22 +02:00
LICENSE Add LICENSE 2019-04-09 18:18:44 +02:00
Makefile improve vagrant test and its documentation 2019-07-25 12:46:53 +02:00
MANIFEST.in introduce spec file and related build scripts 2019-07-23 15:22:40 +02:00
osbuild-run osbuild-run: generate /etc/pki/tls/certs/ca-bundle.crt 2019-07-19 13:31:49 +02:00
osbuild.spec introduce spec file and related build scripts 2019-07-23 15:22:40 +02:00
README.md osbuild: replace --from and --save with --input and --output 2019-06-12 16:26:29 +02:00
setup.py introduce spec file and related build scripts 2019-07-23 15:22:40 +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 from the host and from each other, with the exception that the first stage may be given an input directory, the last stage an output directory and all stages of a given pipeline are given the same filesystem tree to operate on.

Each stage is passed the (appended) options object as JSON over stdin.

The above pipeline has no input and produces a qcow2 image.

Running

osbuild [--input DIRECTORY] [--output DIRECTORY] PIPELINE

Runs PIPELINE. If --input is given, the directory is available read-only in the first stage. If --output is given it, it must be empty and is avialble read-write in the final stage.