Task: Integrate and Create Build |
| |
|
This task describes how to integrate all changes made by developers into the code base and perform the minimal testing to validate the build. |
Disciplines: Configuration and change management |
|
Purpose
The purpose of this task is to integrate all changes made by all developers into the code base and perform the minimal
testing on the system increment in order to validate the build. The goal is to identify integration issues as soon as
possible so they can be corrected easily by the right person, at the right time. |
Relationships
Roles | Primary Performer:
| Additional Performers:
|
Inputs | Mandatory:
| Optional:
|
Outputs |
|
Steps
Integrate implemented elements
In the relevant Workspace, combine all completed Change Sets that are
not in the latest baseline. Resolve any conflicting versions of the artifacts by either removing one of the change sets
that created the conflict or by creating a new change set that includes merged versions of the conflicting
artifacts.
|
Create build
Create the build. The details of this step depend upon the implementation language and development environment and
may involve compiling and linking (in the case of compiled languages) and/or other processes that result in an
executable increment of the system.
Examples of these steps include:
-
Compiling and linking the source artifacts to create an executable
-
Loading binary objects on a test bench or simulator
-
Running a script to load/update database schemas
-
Packaging and deploying web applications
|
Test integrated elements
Run Developer Tests against the integrated elements to verify that they behave the same as they did in isolation.
Ensure that the scope of these tests is as broad as possible, which ensures that the latest change sets did not
cause failing developer tests in other areas of the system.
|
Make changes available
When tests are successfully completed and the build is considered "good," the results are made available to the
rest of the team by Promoting Changes. The details of this step depend on the configuration
management tools in use, but in general this involves committing a tested change set to the CM repository so that
it serves as the basis of development for the next increment of the system. This is the essence of Continuous Integration.
|
Run "Smoke Tests"
Several builds will be created in each iteration. For each build, this step is performed only when change sets have
been delivered to satisfy the requirements of that build.
Execute a sub-set of the system tests to ensure that the build is suitable prior to committing resources to the full
scope of system testing. While the level of testing will vary, focus on gaining confidence that the increment is
of sufficient quality to establish a baseline for system testing.
|
Create a baseline
Several builds will be created in each iteration. For each build, this step is performed only when change sets have
been delivered to satisfy the requirements of that build.
The procedure for this step depends on the configuration management tools in use.
Create a baseline that unambiguously identifies the configuration for the build that is ready for system testing.
Identify the version of each implementation element and supporting artifacts that were used to create this build.
|
|
Key Considerations
In order to be effective at applying the practice of Continuous Integration, the time to integrate, build, and test the increment must be short enough that it can be
performed several times per day. Changes should be broken down into relatively small Change Sets that can
be implemented, integrated and tested quickly.
|
More Information
|