aboutsummaryrefslogtreecommitdiffstats
path: root/docs/content/overview/csit/branching_strategy.md
blob: 16d8e0f471261e9995bd169e0240e25cc7897b94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
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.