Note: The build system is based on Rake, using Gaudi to organise tasks and helpers.
The purpose of the build system is to provide a consistent UI across all the different tools and technologies used to build and test the COVID-19 App System and to provide a single place to define and maintain configuration parameters for the development environment.
The build system is tested with and assumes an environment where all the necessary tools are installed and correctly configured - something that is handled by the development environment provisioning scripts.
The code in the build system is namespaced in Ruby modules.
The Gaudi module contains the core of the build system which handles loading the configuration, the build system modules and provides only a limited number of helper functions and built-in tasks. These are documented in the Gaudi repository.
If an entry has no easily recognized module prefix (Gaudi:: or NHSX::) then it is a safe bet that it is functionality that comes from a public library/gem.
By convention, Gaudi uses environment variables to pass parameters to its tasks and control functionality. This is described in more detail in the Gaudi core documentation.
Environment variables that influence/parameterise the build system behaviour are defined in Gaudi::Configuration::EnvironmentOptions.
The top-level Rakefile sets up Gaudi, which then loads the system configuration and modules.
From the root of the repository
List all tasks, with comments
rake -T
List all tasks, with comments, that match a regular expression pattern
rake -T <pattern>
Generate the documentation under out/doc/gaudi
rake doc:gaudi
Generate a graphical overview (graphviz) of the tasks and their dependencies
rake doc:graph:gaudi