The diagram below and the description that follows outline the tasks performed on each run of the auto build.
Initialize
- The master configuration file (specified with the --config command line option) is processed and used to create the various Perl objects required for the build
- An exclusive lock is aquired to prevent multiple instances of the builder running concurrently. If the lock can't be aquired the builder exits silently. This allows a simple crontab entry to run the builder every 5 minutes - it merely exits if its already running.
- The priority of the build process is lowered to help ensure that the build machine remains relatively responsive even when under heavy load.
- Global environment variables specified in the config file are set to have effect for the remainder of the build run.
Checkout
- Initialize each repository with any global configuration such as environment variables, or in the case of Perforce, build the client view.
- If the module is new, then checkout the sources. If the module already exists, then update the sources (if required).
- If the module was new / changed, then clear out the build cache for that module
Build
- Take a snapshot of the virtual install root for the module.
- Invoke the control file to perform the build.
- Detect any new packages in the various package spool directories
- Populate the cache with changed/new files from the virtual install root, and with generated packages.
Output
- Copy the generated packages to an output directory, for example, for a web or FTP site.
- Save the build log files to an output directory.
- Generated HTML status pages listing modules built and their corresponding packages and log files.
- Send email alerts to the build maintainer and / or development team upon both success and failure.
- Generate ISO images containing a bundle of packages.