This document describes the main features of the NICOS
(NIghtly COntrol System) tool that facilitates nightly builds of large
software projects on UNIX-like
platforms. It is currently used for
The details about the NICOS tool can be bound in the following documents:
The NICOS tool controls the nightly builds of
software products with large number of packages
managed by different developers. It monitors
build processes on multiple platforms trying to
identify and compensate short term system problems,
analyzes the build results, allows to run tests, and
sends notifications about problems to responsible developers.
The NICOS tool uses the CVS repository to get the
code and imposes virtually no requirements on
the release build system (can be configured to work with
CMT or SCRAM). The NICOS code consists of PERL and
Bourne Shell scripts.
The NICOS tool is able to perform build processes on different
platforms or with different compiling options in certain order.
The information about a build progress is reflected on the
nightly builds web page. There could be one
nightly release for daily rebuilds, or
several nightly releases with lifetimes.
For instance, in the ATLAS project there
are seven nightly releases with a lifetime of one
week. The ATLAS nightlies include
linked builds that
produce binaries on different Linux platforms and with
different compiling options, debug and optimized.
The linked builds have the separate web pages of build results
with cross-reference links.
The NICOS tool implies the following stages of the build process:
- Code is updated from a CVS repository.
Several options can be used to determine the versions
of software packages of a project:
NICOS has its own web based tag
collection tool, Version Administrator, that allows to handle
the projects with small number of packages
is available). The Version Administrator is a PHP script
so it should be installed on web server with a PHP module
- use the latest CVS tag
- use the versions provided by the
This option is standard for ATLAS nightly builds
- read the list of packages and its tags directly from a text or xml file provided by a user
- Project is configured with the set of commands
relevant for particular release tool (saved in the
NICOS configuration file)
- Code is compiled. In ATLAS nightlies the CMT tool manages the compilation order and configuration
- Build output is checked for errors.
The problems are identified if certain patterns
are found (such as 'No rule to make target',
'Symbol referencing errors'). NICOS contains
the default set of such patterns that can be modified
- QA checks are performed.
They are considered unsuccessful if non-zero value
is returned or a certain patterns (indicated in
nicos configuration file) are found
- Integration tests are run.
ATLAS nightlies the ATN tool is used for
organization and validation of integration tests.
ATN checks the exit code of a test application
and verifies that certain text patterns are present
and/or absent in the output
- Information is posted on the
NICOS web pages including the summaries for nightly projects and platforms
as well as detailed results for each nightly release
- Developers are notified about problems with their
packages via e-mail. In ATLAS nightlies the lists of e-mail addresses for
packages are retrieved from the Tag Collector database. In addition ATN tool notifies the authors of failed integration tests.
Send comments or questions