Baserock Glossary
- Artifact, build artifact
- Artifact cache server
- Base system
- Base system image
- Build system
- Build system image
- Btrfs
- Cache key
- Cache server
- Chunk, Chunk artifact
- Configuration extension
- Continuous integration and delivery
- Definition, definition file, morphology
- Deploy, deployment
- Deployment extension
- Development system
- Development system image
- Distributed build
- Git
- git cache server
- Gitano
- Local build
- Lorry
- Mason
- morph
- Morphology
- Staging area
- stratum (strata)
- System, System image, System artifact
- System branch
- Trebuchet
- Trove
- Workspace
- Write extension
Note: this document is work in progress, and is still subject to frequent change. If you are in any doubt over the meaning of a specific word or phrase, please ask in irc or on the mailing list.
Artifact, build artifact
The result of building something from source: a chunk, a stratum, or a system.
- For a chunk, the source is the upstream source code plus a (possibly autogenerated, ephemeral) definition, and the result of the build (the chunk artifact) is what gets installed onto the system the chunk is part of.
- For a stratum, the source is the definition, and the artifact is the list of chunk artifacts used for a build of a specific system.
- For a system, the source is the definition, and the artifact is the files that are included in the system, plus any changes done at system building time.
Each artifact has a unique identity derived from its source code, build instructions and build environment, so that it can be shared.
Artifact cache server
A machine which can serve artifacts from its cache directory which is
populated by morph
. Allows morph
instances on different machines to share
artifacts, avoiding the need for everyone to build the same thing that someone
else has already built.
See the caching page for more information.
Base system
A minimal Baserock system containing the minimum necessary to have a runnable system. Base systems are defined in definitions beginning
with base-system-
e.g.
base-system-x86_64-generic.morph
Base system image
A system image of a Baserock base system.
Build system
A Baserock system containing the tools typically needed to build
Baserock systems. Build systems are defined in definitions beginning
with build-system-
e.g.
build-system-x86_64-generic.morph
Build system image
A system image of a Baserock build system.
Btrfs
A Linux filesystem, used by Baserock to provide the capability of versioning complete systems.
Cache key
This cache key is used to identify things in the build artifact cache, and to determine whether an artifact needs to be rebuilt. The cache key is computed for a source in a given context, and all the separate build artifacts built from that source in that context share the same cache key.
Cache server
See git cache server and artifact cache server.
Chunk, Chunk artifact
A component in a system that corresponds to an upstream project (e.g. the
Linux kernel, systemd
), or a component developed for Baserock itself.
Configuration extension
A deployment extension used to configure the system, e.g. by adding
configuration files or entries in configurations to the system's rootfs.
Implemented in a .configure
file in the extensions/
directory in the
definitions
repository
Continuous integration and delivery
A software development process, where changes to projects are integrated into the mainline of development frequently, to reduce the difficulty of integrating changes later. Tools such as Jenkins have been invented to make this easier. (See also Mason.)
Definition, definition file, morphology
A data file used by the Baserock tools to specify how things are constructed or deployed:
- a chunk definition specifies how a chunk gets built;
- a stratum definition specifies what chunks to include in a stratum and where each chunk's source is stored;
- a system definition lists the strata included in a system;
- a cluster definition specifies how a group of systems is to be deployed together.
Deploy, deployment
A Baserock system artifact that has been built needs to be deployed to a
real or virtual machine, or an OpenStack instance before it can be run. This is
done using the morph deploy
command. The deployment will configure the
system to suit the particular target, by setting up the bootloader and
hostname, configuring network access, filesystems, etc.
Deployment extension
A program or script which is invoked by morph deploy
during the process of
deploying a Baserock system. There are two types:
- configuration extension;
- write extension.
Development system
A Baserock system containing the tools typically used for developing under
Baserock. Consists of a Build System with additional support for lanuguages
including Ruby and Node.js. Development systems are defined in definitions
beginning with devel-system-
e.g.
devel-system-x86_64-generic.morph
Development system image
A system image of a Baserock Development system.
Distributed build
A tool which allows some steps in building a system to be performed in parallel, and on machines other than the base or development system. (See also Local build and the distbuild guide).
Git
A distributed revision control and source code management (SCM) program. Used to in Baserock to store and provide version control of all system components.
git cache server
A server that allows querying of the git repositories without having to clone them. It is typically on the same machine as the Trove.
Gitano
The git server used in a Trove. See the gitano homepage
Local build
Performing a build on the build system or the development system rather than using the Distributed build tool.
Lorry
A tool which converts or mirrors upstream source code into git repositories on the Trove. A component of a Trove.
Mason
A continuous integration and delivery server which monitors git repositories for changes to any components of the system(s) being developed, builds all the necessary artifacts, and tests them using a battery of automated tests. There are public examples for the Baserock project at Mason x86_64 and Mason armv7lf
morph
The morph
program is the workflow, build, branching, and deployment tool that
is used when developing with Baserock. The word 'morph' is also often used to
refer to a definition (or morphology ), which has the extension .morph
.
Morphology
See definition.
Staging area
A directory where intermediate build artifacts are stored and assembled temporarily while building, before they are deployed. The directory exists:
- in the development system for local builds;
- in build worker nodes for distributed builds.
(This entry should be improved sometime)
stratum (strata)
A group of chunks that together serve some unified purpose. For example, a
stratum might contain a set of chunks for running a mail server, or chunks
for all the version control systems we support in Trove. A special case is the
build-essential
stratum, which is the set of chunks which are enough to
build all the rest of Baserock.
The plural form of stratum is strata. Blame the ancient Romans. One stratum, many strata.
Strata form "super-components", bigger building blocks which make it easy to build entire systems. If chunks are individual red bricks, strata are pre-fabricated concrete walls and floors.
Strata definitions are stored in the strata
directory of the
definitions
git
repository.
System, System image, System artifact
In Baserock, a system is a set of strata that work together for some purpose. A system is not ready to run on a device or virtulization host, it needs to be deployed to a machine (real or virtual) first.
Can be deployed and run as a Virtual Machine in a virtualization tool such as VirtualBox or KVM (see Quick Start).
System branch
A Git branch in definitions.git is effectively a branch of an entire system, rather than one component, as the definitions.git repo controls what components and what version of each component goes into a system.
Old versions of Morph treated branches of the definitions.git repo specially, and had its own set of commands for working with them. Since Baserock 15.25, you should use normal Git commands when working in definitions.git, just like other repos.
Trebuchet
(This entry needs further work - Trebuchet does not exist as a standalone program, only the referenced commands).
A tool which provides a generic update mechanism for a Linux system. It delivers updates through a binary patch for the filesystem. This helps to optimise the network bandwidth requirements of doing an upgrade of a Baserock system. It is similar to rsync, when run in batch mode, but more efficient in our use cases. (It is also much less featureful than rsync.)
It provides the following commands (invoke them with the --help
option in your
development system to see what each one does):
tb-switch tb-update tbdiff-create tbdiff-deploy
Trebuchet is not used much, yet.
Trove
A server that provides git hosting, mirroring and conversion of upstream source code into git, build artifact storage, and other services that are useful to a team using Baserock to develop products.
Workspace
Old versions of Morph (before the Baserock 15.25 release) had a concept of the "workspace", where all Git clones in use by Morph must be kept. Morph no longer requires or supports the concept of a 'workspace', any Git clone can be used.
Write extension
A deployment extension used to perform the deployment e.g. by copying a VM
disk image somewhere and starting the VM.
Implemented in a .write
file in the extensions/
directory in the
definitions
repository
May also include a '.check' file which contains preparatory checks for the write
extension.