Skip to content

Kiwix Build usage in CI & CD

Kelson edited this page May 15, 2024 · 2 revisions

Kiwix Build workflow produces a few different things necessary to the Kiwix CI/CD.

Base dependencies

Base dependencies are tarballs where third party dependencies are pre-compiled. The purpose of this is to speed-up Kiwix Build own CI. They are available here.

Each time we use the CI/CD of Kiwix Build, it is checked if an appropriate base dependency tarball is available. If "yes" it is downloaded and used, otherwise it will be built and uploaded.

If you need to create a new tarball you can either:

  • PREFERED: Increment the version number of them in kiwixbuild/versions.py a new version is uploaded
  • EXCEPTIONAL: Delete the multiple tarballs related to current version in tmp.kiwix.org/ci.

Base dependencies are compiled without debug symbols and usual release options.

Project Dependencies

The project dependencies tarballs gather, for each Kiwix project, the compiled dependencies necessary to its compilation. These dependencies can be third party or internal libraries (like libzim or libkiwix).

They are available here and are built each night.

Project dependencies (other than base dependencies) are compiled with debug symbols and without usual release options.

Releases & nightlies

Kiwix Build is in charge of the release and nightlies of binaries for many Kiwix project.

Releases are triggered via git tagging.

Official releases are build with usual release options (and without debug symbols) but nightlies are built in debug mode.

Containerised environments

Beside the kiwix-build command line tool, Kiwix Build proposes prepared compilation environments for multiple GNU/Linux systems too.

These prepared environments include: compilers, binary toolchains and any third-party tool necessary to run the compilation toolchain. They don't contain pre-compiled library dependencies build by kiwix-build, (like Xapian, Libicu, Libmicrohttps, ...) but it contains dependencies installed with package manager.

These container images are necessary and intended to be used by Kiwix itself in many of its CI. But they are free to download et can be reused, although they can break anytime, therefore at your won risk. You can find them on here.