No description
Find a file
Tom Gundersen c2243aee6a stage: add org.osbuild.first-boot
This stage runs a given command only on the first boot of the image,
useful for doing instantiation tasks that can only be done in the
target environment, or that should be done per-instance, rather
than per image.

Ideally we would use systemd's ConditionFirstBoot for this, but that
requires images to ship without an /etc/machine-id, and currently
we only support shipping images with an empty /etc/machine-id.
Changing this would mean dropping /etc/fstab in favor of mounting
the rootfs rw from the initrd. This is likely the right thing to
do regardless, but we would have to audit what other first-boot
services we would end up with pulling in in this case.

Instead we introduce our own flag file /etc/osbuild-first-boot,
and use ConditionPathExists.

Signed-off-by: Tom Gundersen <teg@jklm.no>
2020-04-15 16:07:34 +02:00
.github/workflows ci: run selinux and ostree unit tests 2020-04-15 15:39:45 +02:00
assemblers assembler: add org.osbuild.ostree.commit 2020-04-15 15:39:45 +02:00
docs osbuild: add --output-directory=DIR 2020-04-15 15:40:17 +02:00
jenkins 🤏 Add a little bit more testing 2020-04-09 16:35:08 +02:00
osbuild osbuild: add --output-directory=DIR 2020-04-15 15:40:17 +02:00
runners runners: drop ca certificate handling 2020-04-15 15:29:52 +02:00
samples samples/f31-ostree-image.json: enable hybrid boot 2020-04-15 15:39:45 +02:00
schemas schema: add json-schema describing our manifest 2020-03-07 13:43:24 +01:00
sources sources/ostree: verify signature on local pull 2020-04-15 15:39:45 +02:00
stages stage: add org.osbuild.first-boot 2020-04-15 16:07:34 +02:00
test stage: add org.osbuild.first-boot 2020-04-15 16:07:34 +02:00
.editorconfig editorconfig: add one matching current style 2019-12-13 18:15:08 +01:00
.gitignore .gitignore: remove old ignored directory 2020-03-06 11:57:17 +01:00
.pylintrc pylint: disable too-many-arguments rule 2019-07-24 12:55:48 +02:00
.travis.yml ci: import runtime tests to github actions 2020-03-24 16:08:24 +01:00
LICENSE Revert "Fill in the license template" 2019-11-18 12:23:10 +01:00
Makefile build: fix make release contributor list without git tags 2020-03-23 10:03:33 +01:00
NEWS.md NEWS.md: fix v11 notes and add Martin 2020-04-01 20:00:39 +02:00
osbuild.spec spec: require matching python3-osbuild version 2020-04-07 10:55:16 +02:00
README.md docs: refactor README 2020-03-02 21:34:09 +01:00
setup.py 11 2020-04-01 19:03:41 +02:00
tree-diff tools/tree-diff: strip NULL character from selinux xattr 2019-10-08 21:39:35 +02:00

OSBuild

Build-Pipelines for Operating System Artifacts

OSBuild is a pipeline-based build system for operating system artifacts. It defines a universal pipeline description and a build system to execute them, producing artifacts like operating system images, working towards an image build pipeline that is more comprehensible, reproducible, and extendable.

See the osbuild(1) man-page for details on how to run osbuild, the definition of the pipeline description, and more.

Project

Requirements

The requirements for this project are:

  • python >= 3.7
  • systemd-nspawn >= 244

Additionally, the built-in stages require:

  • bash >= 5.0
  • coreutils >= 8.31
  • curl >= 7.68
  • qemu-img >= 4.2.0
  • rpm >= 4.15
  • tar >= 1.32
  • util-linux >= 235

At build-time, the following software is required:

  • python-docutils >= 0.13
  • pkg-config >= 0.29

Build

The standard python package system is used. Consult upstream documentation for detailed help. In most situations the following commands are sufficient to build and install from source:

python setup.py build
python setup.py install --skip-build --root=/

The man-pages require python-docutils and can be built via:

rst2man docs/<input-file>.rst <output-file>

Repository:

License:

  • Apache-2.0
  • See LICENSE file for details.