Workshop builds container images using buildah. It combines a userenv (base image spec) with requirement definitions (software to install) to produce reproducible container images. Part of the perftool-incubator project.
workshop.py-- Python 3 implementation (~1800 lines)
schema.json-- JSON schema for userenv/requirements/config validationregistries-schema.json-- JSON schema for registry authentication configuserenvs/-- Userenv definition files (base image specs)requirements/-- Requirement definition files (software to install)configs/-- Container config files (entrypoint, env vars, ports, etc.)
- Uses
invoke(forinvoke.run()shell commands) andjsonschema(via toolbox) - Uses
toolbox.json(load_json_file, validate_schema) from TOOLBOX_HOME/python/ - Use a
.venvvirtual environment for pip installs, not system pip
TOOLBOX_HOMEenv var must point to a toolbox checkout- Requires
buildahandskopeoon the system
- 4-space indentation, no tabs
- Modeline headers for editor configuration
- Python uses a custom
VERBOSElogging level (15) between DEBUG (10) and INFO (20) - SHA-256 checksums use canonical/sorted JSON encoding
workshop-ci.yaml-- Tests workshop.py on PRcrucible-ci.yaml-- Crucible integration CI on PRcrucible-merged.yaml-- Post-merge crucible CI (pull_request_target: closed)
- Main branch:
master - Upstream remote:
perftool-incubator/workshop - Commit messages: lowercase, imperative mood, concise