Difference between revisions of "CSIT/Branching Strategy"

From fd.io
Jump to: navigation, search
(VPP Selection of CSIT Operational Branches)
(Release branch: 'rls1606', 'rls1609', ...)
Line 29: Line 29:
 
CSIT branch diagram:
 
CSIT branch diagram:
  
                     /--- csit-verified-rls1606-$(DATE)
+
                     /--- oper-rls1606-$(DATE)
                   / /--- csit-verified-rls1606-$(DATE)
+
                   / /--- oper-rls1606-$(DATE)
 
                   / /          . . .
 
                   / /          . . .
                 / /                        /--- csit-verified-rls1609-$(DATE)
+
                 / /                        /--- oper-rls1609-$(DATE)
 
                 / /                        /          . . .
 
                 / /                        /          . . .
 
             /--- rls1606 ---[end]  /--- rls1609 ---[end]
 
             /--- rls1606 ---[end]  /--- rls1609 ---[end]
Line 40: Line 40:
 
-- master ---------------------------------------------------->
 
-- master ---------------------------------------------------->
 
           \ \          . . .
 
           \ \          . . .
             \ \--- csit-verified-master-$(DATE)
+
             \ \--- oper-master-$(DATE)
             \--- csit-verified-master-$(DATE)
+
             \--- oper-master-$(DATE)
 
</pre>
 
</pre>
  

Revision as of 14:42, 13 July 2016

Definitions

CSIT development branch: A CSIT branch used for test development which has a 1:1 association with a VPP branch of the same name. CSIT development branches are never used for operational testing of VPP patches or images.

CSIT operational branch: A CSIT branch pulled from a CSIT development or release branch which is used for operational testing of the VPP branch associated from its' parent branch. CSIT operational branches are named 'csit-verified-<parent branch>-<YYMMDD>'. CSIT operational branches are the only branches which should be used to run verify jobs against VPP patches or images.

CSIT release branch: A CSIT branch which is pulled from a development branch and is associated with a VPP release branch. CSIT release branches are never merged back into their parent branch and are never used for operational testing of VPP patches or images.

VPP Selection of CSIT Operational Branches

Each VPP and release branch will have a script which specifies which CSIT operational branch is used when executing the per patch verify jobs. This is maintained in the VPP branch in the file .../vpp/build-root/scripts/csit-test-branch as proposed by Ed (https://gerrit.fd.io/r/#/c/1343/ and https://gerrit.fd.io/r/#/c/1345/).

Branches

Main development branch: 'master'

The CSIT development branch 'master' will be the main development for new VPP feature tests that have not been included in a release. Weekly CSIT operational branches will be pulled from 'master'. After validation of all CSIT verify jobs, the VPP script 'csit-test-branch' will be updated with the latest CSIT operational branch name. Older CSIT operational branches will be available for manual triggered vpp-csit-verify-* jobs.

Release branch: 'rls1606', 'rls1609', ...

CSIT release branches shall be pulled from 'master' with the the convention "rls<release#>" (e.g. rls1606, rls1609). New tests that are developed for existing VPP features will be committed into the 'master' branch, then cherry-picked|double committed into the latest CSIT release branch. Periodically CSIT operational branches will be pulled from the CSIT release branch when necessary and the VPP release branch updated to use the new CSIT operational branch.

VPP branch diagram:

-- master ---------------------------------------------------->
           \                           \
            \--- stable/1606 ---[end]   \--- stable/1609---[end]


CSIT branch diagram:

                    /--- oper-rls1606-$(DATE)
                   / /--- oper-rls1606-$(DATE)
                  / /          . . .
                 / /                        /--- oper-rls1609-$(DATE)
                / /                        /          . . .
             /--- rls1606 ---[end]  /--- rls1609 ---[end]
            /        /                 /        /
           / (cherry-picking)         / (cherry-picking)
          /        /                 /        /
-- master ---------------------------------------------------->
           \ \          . . .
            \ \--- oper-master-$(DATE)
             \--- oper-master-$(DATE)

Creating a CSIT Operational Branch

Run csit-vpp-verify-weekly job

csit-vpp-verify-weekly (which runs CSIT functional test suite 3 times) is run on the CSIT development or release branch (e.g. 'master' or 'stable/1606') using the latest VPP package set on nexus.fd.io for the associated VPP branch. Any anomalies will have the root cause identified and be resolved in the CSIT development branch prior to pulling the CSIT operational branch.

Pull CSIT operational branch from parent

The CSIT operational branch is pulled from the parent CSIT development or release branch.

Run csit-vpp-master-veriy-semiweekly

csit-vpp-master-verify-semiweekly (which runs CSIT functional test suite 3 times and long perf tests once) is run on the CSIT operational branch with the latest image of the associated VPP development or release branch. This job is run to validate the next reference VPP build for validating the results of all of the csit-vpp-verify* jobs.

Update VPP branch to use the new CSIT operational branch

Push a patch updating the VPP branch to use the new CSIT operational branch. The VPP verify jobs will then be run and any anomalies will have the root cause identified and fixed in the CSIT operational branch prior to 'csit-test-branch' being merged.

Periodically lock/deprecate old CSIT Operational Branches

Periodically old CSIT operational branches will be locked and/or deprecated to prevent changes being made to the operational branch.

Action Items

Resolve mechanism for associating a VPP branch with a CSIT Operational Branch

Rename scripts (e.g. csit-vpp-master-verify-semiweekly/csit-vpp-verify-weekly) to better reflect their purpose