Skip to content

Automated builds and Azure Pipelines CI

Alex Reustle edited this page Jul 13, 2020 · 1 revision

The Fermitools are built by the azure pipelines automated CI system created by the fermi-lat developers from the Fermi Science Support Center at NASA's Goddard Space Flight Center.

Azure Pipeline

The Pipeline is divided into 9 parallel stages across 3 broad categories: Linux, MacOSX, and Sync.

Prepare Dependencies

The Linux Prepare Dependencies and MacOSX Prepare Dependencies stages create the linux and mac versions of the fermitools-dependencies and fermitools-build-deps metapackages. These are versioned conda packages that collect all required packages for fermitools build and run-time conda dependency resolution into a single metapackage for each system.

Once built, the metapackages are uploaded to the fermi-lat anaconda cloud organization. They are built to share a version number with the corresponding Fermitools, which have yet to be built.

Save Explicit Dependencies

The Linux Save Explicit Dependencies and MacOSX Save Explicit Dependencies stages download the recently created build packages and create an explicit list of tarball URLs, which is then uploaded with an appropriate tag to the Fermitools-explicit-build-deps-linux and Fermitools-explicit-build-deps-macosx.

Build Stage

The Linux Build Stage and MacOSX Build Stage stages use repoman to checkout the target source code, and conda-build to create a fermitools tarball, finally uploading to anaconda.

Test Stage

Checkout and test the recently uploaded tools.

Repo Tag Stage

Having built both mac and linux versions of the tools this stage uses git commands to add git tags to each of the component packages used to build that version of the tools. These tags enable bidirectional traceability between the final binary products and the source code used to to compile them.