Dependencies

By default when you install CEKit, only required core dependencies are installed. This means that in order to use some generators or builders you may need to install additional software.

Building container images for various platforms requires many dependencies to be present. We don’t want to force installation of unnecessary utilities thus we decided to limit dependencies to the bare minimum (core dependencies).

If a required dependency (for particular run) is not satisfied, user will be let know about the fact. In case of known platforms (like Fedora or RHEL) we even provide the package names to install (if available).

Below you can see a summary of CEKit dependencies and when these are required.

Core dependencies

Following Python libraries are required to run CEKit:

  • PyYAML

  • Jinja2

  • pykwalify

  • colorlog

  • click

Note

For more information about versions, please consult the Pipfile file available in the CEKit repository.

Additionally, we require Git to be present since we use it in many places.

Builder specific dependencies

This section describes builder-specific dependencies.

Docker builder dependencies

Docker

Required to build the image.

Docker Python bindings

We use Python library to communicate with the Docker daemon instead of using the docker command directly. Both, old (docker-py) and new (docker) library is supported.

Docker squash tool

After an image is built, all layers added by the image build process are squashed together with this tool.

Note

We are aware that Docker now supports the --squash parameter, but it’s still an experimental feature which requires reconfiguring the Docker daemon to make it available. By default it’s disabled. Instead relying on this, we use a proven tool that works in any case.

Important

If run within the Red Hat environment additional dependencies are required.

odcs command

This is required when generate command and --build-engine buildah or --build-engine docker parameters are used. This package is available for Fedora and the CentOS family in the EPEL repository. For RHEL/Fedora OS’es this is satisfied by installing the odcs-client package.

brew command

Used to identify and fetch artifacts from Brew.

skopeo command

Used for follow_tag annotation to determine latest image version and release information.

Buildah builder dependencies

Buildah

Required to build the image.

Important

If run within the Red Hat environment additional dependencies are required. See the note in the Docker section above for more details.

Podman builder dependencies

  • Podman

    Required to build the image.

Important

If run within the Red Hat environment additional dependencies are required. See the note in the Docker section above for more details.

OSBS builder dependencies

koji command

The koji command is used to interact with the Koji API to execute the build.

fedpkg command

Used to clone and interact with dist-git repositories.

Important

If run within the Red Hat environment above dependencies are replaced with Red Hat specific tools:

  • koji is replaced by brew command (or brew-stage if run with the --stage parameter)

  • fedpkg is replaced by rhpkg command (or rhpkg-stage if run with the --stage parameter)

Further, the following dependency is required when using the follow_tag annotation

  • skopeo command which is used to determine latest image version and release information.

Test phase dependencies

For more information about testing, please take a look here.

Test dependencies can vary. CEKit uses a plugable way of defining Behave steps. The default test steps are located in https://github.com/cekit/behave-test-steps repository. You can find there more information about the current dependencies.

Development dependencies

If you wish to contribute and develop CEKit itself (including running CEKit tests) then please see Contributing