Skip to content
This repository has been archived by the owner on Jun 23, 2023. It is now read-only.

Latest commit

 

History

History
54 lines (34 loc) · 2.27 KB

BUILDSYSTEM.md

File metadata and controls

54 lines (34 loc) · 2.27 KB

Build System

Note: The build system is based on Rake, using Gaudi to organise tasks and helpers.

Purpose

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.

Assumptions

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.

Usage and important sections

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.

Environment variables

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.

System Configuration

The top-level Rakefile sets up Gaudi, which then loads the system configuration and modules.

Find out what tasks are available

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 reference documentation

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