A Project is the highest level entity in Continua CI and acts as a container for Configurations. Projects have a one-to-many relationship with Configurations where each Project can contain multiple Configurations, however each Configuration can only exist in one Project. Projects enable Continua CI to group Configurations together and apply settings across all Configurations in that Project.
For example, Project wide settings allow you to:
- Set User Permissions that apply to all Configurations in a certain Project.
- Create Repositories that are only accessible to Configurations in a certain Project.
- Override Global Variables for all Configurations in a certain Project.
- Create Project specific cleanup policies.
A Configuration is the defining component of Continua CI and the continuous integration process. Configurations contain all the information that is needed to complete builds, including:
- The Action Work Flow. This work flow is where you specify the individual actions that will run when you execute your build process. Using the Stage Editor you can define multiple build stages per Configuration and set a variety of actions on these stages.
- How a Configuration is triggered. Configurations can be fired either manually through the Continua CI user interface or by creating a Trigger on the Configuration. Triggers can be set to fire in the following ways:
- Fire the Configuration when a checkin is made to a source control repository.
- Fire the Configuration at a certain date or time.
- Fire the Configuration after another Configuration has completed.
- Repositories. Source control repositories, such as Subversion and Mercurial, can be linked to Configurations so that a repository's activity can be monitored and in turn, trigger builds.
- Build Conditions. Conditions can be set on Configurations to determine what will trigger a build. For example, Configurations can be set to fire only if the previous Configuration completed its build successfully. Alternatively, you could set a Configuration to fire only if a certain file was updated in it's repository.
- Inheriting Project settings. Configurations inherit settings from its project, however these can be overridden per Configuration. Permissions, Variables and Cleanup Policies are all inherited automatically from the Configuration's Project, however these can be set per Configuration.
The Diagram below demonstrates the relationship between Configurations, Projects and any settings that are set Globally. Each level of the tree can override the settings it inherits from its parent.