Branching Strategy

Branching Strategy #

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 oper-<YYMMDD> for master and oper-<release>-<YYMMDD> for release branches. 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.

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-160623
                   / /--- oper-rls1606-$(DATE)
                  / /          . . .
                 / /                        /--- oper-rls1609-$(DATE)
                / /                        /          . . .
             /--- rls1606 ---[end]      /--- rls1609 ---[end]
            /        /                 /        /
           / (cherry-picking)         / (cherry-picking)
          /        /                 /        /
-- master --------------------------------------------------------------->
           \ \          . . .
            \ \--- oper-$(DATE)
             \--- oper-160710

Creating a CSIT Operational Branch #

Run verify weekly job #

csit-vpp-device-master-<OS>-<arch>-<testbed>-weekly 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 verify semiweekly job #

csit-vpp-device-master-<OS>-<arch>-<testbed>-semiweekly 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.