C-Docs: move "Branching Strategy" from wiki 27/39127/3 oper-230626 oper-rls2306-230626
authorTibor Frank <tifrank@cisco.com>
Fri, 23 Jun 2023 10:30:51 +0000 (10:30 +0000)
committerTibor Frank <tifrank@cisco.com>
Fri, 23 Jun 2023 10:41:27 +0000 (10:41 +0000)
Change-Id: Ie63ee26791050e2312f89a665c3530a1cfa2c58e
Signed-off-by: Tibor Frank <tifrank@cisco.com>
docs/content/overview/csit/_index.md
docs/content/overview/csit/branching_strategy.md [new file with mode: 0644]

index 29f0164..1a155b6 100644 (file)
@@ -12,3 +12,4 @@ weight: 2
 - [Test Naming]({{< relref "/overview/csit/test_naming" >}})
 - [Test Tags]({{< relref "/overview/csit/test_tags" >}})
 - [Suite Generation]({{< relref "/overview/csit/suite_generation" >}})
+- [Branching Strategy]({{< relref "/overview/csit/branching_strategy" >}})
diff --git a/docs/content/overview/csit/branching_strategy.md b/docs/content/overview/csit/branching_strategy.md
new file mode 100644 (file)
index 0000000..16d8e0f
--- /dev/null
@@ -0,0 +1,109 @@
+---
+title: "Branching Strategy"
+weight: 6
+---
+
+# 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.