Within the Continua CI environment there are three hierarchy levels: Global, Project and Configuration (see figure 1). This structure is similar to object oriented programming where children inherit settings from their parent, however they can also override these settings.
If you have properties set on all three levels of Continua CI, the lowest child will take precedence. For example, if you have security permissions set at the global, project and configuration level and a user views a particular configuration, Continua CI will always use the permissions created on the configuration.
If there is ever a conflict between multiple properties over multiple levels, Continua CI will always use the value on the lowest level.
Figure 1: 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
Anything created globally can be accessed by all projects and configurations in Continua CI. Many elements of Continua CI can be set globally including:
Project acts as a container for configurations and enable Continua CI to group configurations together and apply settings across all configurations in that project. Anything created at the project level can be accessed by all configurations within that project. Projects have access to anything set on the global level but do not know about any settings in other projects.
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.
For example, Project settings allow you to:
A configuration is the defining component of Continua CI and the continuous integration process. Anything set on the configuration will take precedence over anything set globally or on the configuration's project. Configurations are individual entities that do not know about other configurations. For example, if you add a repository onto configuration A, configuration B cannot find that repository or access it. If you need multiple configurations to share repositories, variables etc. then create them either at the project or global level.
Configurations contain all the information that is needed to complete builds, including: