<?xml version="1.0" encoding="UTF-8"?>
<org.eclipse.epf.uma:ContentDescription xmi:version="2.0"
    xmlns:xmi="http://www.omg.org/XMI" xmlns:org.eclipse.epf.uma="http://www.eclipse.org/epf/uma/1.0.4/uma.ecore"
    xmlns:rmc="http://www.ibm.com/rmc" rmc:version="7.2.0" xmlns:epf="http://www.eclipse.org/epf"
    epf:version="1.2.0" xmi:id="-DlaqJu4sEqMPk84qhJ6IEA"
    name="continuous_integration,_i8bUEL6cEdqti4GwqTkbsQ" guid="-DlaqJu4sEqMPk84qhJ6IEA"
    changeDate="2007-07-18T08:02:20.454-0400">
  <mainDescription>&lt;p>&#xD;
    Continuous integration is a software development practice that completely rebuilds and tests the application frequently&#xD;
    -- ideally, every time a change is introduced. This approach provides many benefits as outlined in &lt;a&#xD;
    class=&quot;elementLinkWithType&quot;&#xD;
    href=&quot;./../../../practice.tech.continuous_integration.base/guidances/concepts/continuous_integration_87682D06.html&quot;&#xD;
    guid=&quot;_B3xkEPD0EdqYgerqi84oCA&quot;>Concept: Continuous Integration&lt;/a> and in &lt;a class=&quot;elementLinkWithUserText&quot;&#xD;
    href=&quot;./../../../core.tech.common.base/guidances/supportingmaterials/tech_references_6CCF393.html#WIKP-CI&quot;&#xD;
    guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;>[WIKP-CI]&lt;/a>.&#xD;
&lt;/p>&#xD;
&lt;h3>&#xD;
    Basic steps&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    The detailed application of continuous integration depends on which tools you use (configuration management system,&#xD;
    automated build tool, automated test tool, and so forth). However, these are the basic steps:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
    &lt;li>&#xD;
        A developer, let’s call her Jane, selects a&amp;nbsp;work item&amp;nbsp;to work on.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Jane updates her &lt;a class=&quot;elementLink&quot;&#xD;
        href=&quot;./../../../practice.tech.continuous_integration.base/guidances/concepts/workspace_722BBA90.html&quot;&#xD;
        guid=&quot;_0cEmAMlgEdmt3adZL5Dmdw&quot;>Workspace&lt;/a> to include the most recent &lt;a class=&quot;elementLink&quot;&#xD;
        href=&quot;./../../../core.tech.slot.base/workproducts/software_implementation_slot_E92F6A39.html&quot;&#xD;
        guid=&quot;_Vux8UEfUEdyiPI8btkmvmw&quot;>[Software Implementation]&lt;/a> from the integration workspace.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Jane makes her changes in her workspace to both her developer tests and to the implementation, and then she tests&#xD;
        the changes.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Before committing the changes, Jane updates her workspace again (because other developers may have introduced&#xD;
        conflicting changes) and reruns her developer tests.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If these tests are successful, the changes are promoted (see &lt;a class=&quot;elementLinkWithType&quot;&#xD;
        href=&quot;./../../../practice.tech.continuous_integration.base/guidances/guidelines/promoting_changes_9087B764.html&quot;&#xD;
        guid=&quot;_SM4YIL6dEdqti4GwqTkbsQ&quot;>Guideline: Promoting Builds&lt;/a>) to&amp;nbsp;the&amp;nbsp;integration workspace.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        A complete &lt;a class=&quot;elementLink&quot;&#xD;
        href=&quot;./../../../practice.tech.continuous_integration.base/workproducts/build_95D7D8FD.html&quot;&#xD;
        guid=&quot;_0YuXEMlgEdmt3adZL5Dmdw&quot;>Build&lt;/a> of the application is performed by using the implementation from the&#xD;
        integration workspace, and the entire suite of developer tests is run on this build.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        If any of these tests fail, the team is notified, and the failed test should be addressed as soon as possible.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        This process repeats as the team develops and continuously integrates and tests functionality in small increments.&#xD;
    &lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;h3>&#xD;
    Constraints&#xD;
&lt;/h3>&#xD;
&lt;p>&#xD;
    Conceptually, continuous integration can be performed manually (see &lt;a class=&quot;elementLinkWithUserText&quot;&#xD;
    href=&quot;./../../../core.tech.common.base/guidances/supportingmaterials/tech_references_6CCF393.html#SHO06&quot;&#xD;
    guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;>[SHO06]&lt;/a> for example). However, in practice, there are several constraints that must&#xD;
    be respected for it to be effective:&#xD;
&lt;/p>&#xD;
&lt;ol>&#xD;
    &lt;li>&#xD;
        All changes must be introduced into a tested configuration that you know to be good.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        The integrate-build-test cycle must be fast enough so that it can be completed quickly and the team notified of the&#xD;
        results. Many published guidelines promote a 10-minute cycle.&#xD;
    &lt;/li>&#xD;
    &lt;li>&#xD;
        Keep the &lt;a class=&quot;elementLink&quot;&#xD;
        href=&quot;./../../../practice.tech.continuous_integration.base/guidances/concepts/change_set_430BF233.html&quot;&#xD;
        guid=&quot;_1QU9MAIoEdyLh7vsrHZ4YA&quot;>Change Set&lt;/a>s&amp;nbsp;small enough so that the work can be completed and integration&#xD;
        performed several times per day. Many published guidelines promote a 2- to 4-hour cycle between integrations.&#xD;
    &lt;/li>&#xD;
&lt;/ol>&#xD;
&lt;p>&#xD;
    These constraints imply the need for a configuration management (CM) repository to maintain configuration information&#xD;
    (Item 1 listed previously), automated build and test tools to meet the turnaround constraints (Item 2), and proper&#xD;
    planning and discipline by developers to ensure that their work items and change sets are small enough to complete&#xD;
    quickly (Item 3).&#xD;
&lt;/p>&#xD;
&lt;p>&#xD;
    For a more detailed description of continuous integration, see &lt;a class=&quot;elementLinkWithUserText&quot;&#xD;
    href=&quot;./../../../core.tech.common.base/guidances/supportingmaterials/tech_references_6CCF393.html#FOW06&quot;&#xD;
    guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;>[FOW06]&lt;/a> or &lt;a class=&quot;elementLinkWithUserText&quot;&#xD;
    href=&quot;./../../../core.tech.common.base/guidances/supportingmaterials/tech_references_6CCF393.html#WIKP-CI&quot;&#xD;
    guid=&quot;_9ToeIB83Edqsvps02rpOOg&quot;>[WIKP-CI]&lt;/a>.&#xD;
&lt;/p></mainDescription>
</org.eclipse.epf.uma:ContentDescription>
