Difference between revisions of "VPP/CommitterTasks/PullThrottleBranch"

From fd.io
< VPP
Jump to: navigation, search
(Pulling a VPP Throttle Branch)
(Pulling a VPP Throttle Branch)
Line 56: Line 56:
  
 
:c. '''Example:'''  https://gerrit.fd.io/r/9934/
 
:c. '''Example:'''  https://gerrit.fd.io/r/9934/
 +
 +
:d. Similarly, edit <code>jjb/vpp/docs.yaml</code>
 +
::add a new 'stream' for your new ''YYMM''. Example for ''stable/1904'':
 +
- '1904':
 +
            branch: 'stable/1904’'
 +
            repo-stream-part: 'stable.1904'
 +
 +
:e. '''Example:'''  https://gerrit.fd.io/r/#/c/18982/
  
 
6. Create a new branch ''stable/YYMM'' (example: ''stable/1801'') in the Gerrit web UI against the point on master you wish to be cutting the branch (usually <code>HEAD</code> at the time you’re cutting).
 
6. Create a new branch ''stable/YYMM'' (example: ''stable/1801'') in the Gerrit web UI against the point on master you wish to be cutting the branch (usually <code>HEAD</code> at the time you’re cutting).
Line 61: Line 69:
 
:a. https://gerrit.fd.io/r/#/admin/projects/vpp,branches
 
:a. https://gerrit.fd.io/r/#/admin/projects/vpp,branches
  
7. On ''stable/YYMM'' (example: ''stable/1801'') prepare a commit which updates the <code>.gitreview</code> to reflect the correct branch
+
7. On master, edit vpp/RELEASE.md and add a placeholder for the next release and merge the patch on master.  This will be the commit that the next release -rc0 tag is placed on.
 +
: For example: https://gerrit.fd.io/r/#/c/18803/
 +
 
 +
8. [https://wiki.fd.io/view/VPP/Pushing_and_Testing_a_Tag Lay down a tag] for the next release RC0 (e.g. <code>1804-rc0</code>) on master.
 +
 
 +
9. On ''stable/YYMM'' (example: ''stable/1801'') prepare a commit which updates the <code>.gitreview</code> to reflect the correct branch
  
 
:a. Examples:   
 
:a. Examples:   
Line 71: Line 84:
 
'''NOTE''': Verify that this patch is in fact on the new stable branch, and not on master!
 
'''NOTE''': Verify that this patch is in fact on the new stable branch, and not on master!
  
8. [https://wiki.fd.io/view/VPP/Pushing_and_Testing_a_Tag Lay down a tag] (<code>v18.01-rc1</code>) on ''stable/1801'' at the point of the patch you just merged.
+
10. [https://wiki.fd.io/view/VPP/Pushing_and_Testing_a_Tag Lay down a tag] (<code>v18.01-rc1</code>) on ''stable/1801'' at the point of the patch you just merged.
  
9. Verify that the nexus repos have packages with the correct version and are working
+
'''NOTE:''' If the verification steps in 11 & 12 don't happen by the end of the day, it is best to send an email re-opening master to commits.
  
 +
11. Verify that the nexus repos have packages with the correct version and are working
 
:a. Remerge the patch from step 7
 
:a. Remerge the patch from step 7
  
Line 89: Line 103:
 
::* A repodata/ subdir in the yum repo (centos7)
 
::* A repodata/ subdir in the yum repo (centos7)
  
:e. Update the [[VPP/Installing_VPP_binaries_from_packages | Installing VPP Binaries from Packages]] Wiki page with instructions for the new branch, and test that you can install packages
+
:e. Update the [[VPP/Installing_VPP_binaries_from_packages | Installing VPP Binaries from Packages]] Wiki page with instructions for the new branch, and test that you can install packages from packagecloud.io
 
+
10. [https://wiki.fd.io/view/VPP/Pushing_and_Testing_a_Tag Lay down a tag] for the next release RC0 (e.g. <code>1804-rc0</code>) on master.
+
 
+
11. Update the package version used by Java generation on master with the next release version in <code>vpp/src/configure.ac</code>
+
:a. Example: https://gerrit.fd.io/r/#/c/8578/
+
:b. Merge the patch.
+
  
12. Verify that the nexus repos have packages with the correct version and are working
+
12. Verify that the nexus and packagecloud.io repos have packages with the correct version and are working
 
:a. Remerge the last merged patch on master
 
:a. Remerge the last merged patch on master
 
:b. When the remerge of the last patch on master is complete, go look for package with the correct versions at:
 
:b. When the remerge of the last patch on master is complete, go look for package with the correct versions at:
Line 105: Line 113:
 
::*Non-zero sized ‘Package’ in the apt repos (xenial)
 
::*Non-zero sized ‘Package’ in the apt repos (xenial)
 
::*A repodata/ subdir in the yum repo (for centos7)
 
::*A repodata/ subdir in the yum repo (for centos7)
:d. Follow instructions on [[VPP/Installing_VPP_binaries_from_packages]] and verify that packages with the new versions are installed
+
:d. Follow instructions on [[VPP/Installing_VPP_binaries_from_packages]] and verify that packages with the new versions are installed on packagecloud.io
  
13. If the Jira steps from [[VPP/CommitterTasks/ApiFreeze#Jira_versions]] didn't happen yet, do them now.
+
13. Send the all-clear message. [https://lists.fd.io/g/vpp-dev/message/7811 Example].
  
14. Send the all-clear message. [https://lists.fd.io/g/vpp-dev/message/7811 Example].
+
14. If the Jira steps from [[VPP/CommitterTasks/ApiFreeze#Jira_versions]] didn't happen yet, do them now.
  
 
Amend as necessary with any caveats; for example the 1804 RC1 milestone opened master and stable on different days while minor issues were resolved.
 
Amend as necessary with any caveats; for example the 1804 RC1 milestone opened master and stable on different days while minor issues were resolved.

Revision as of 23:23, 29 April 2019

VPP RC1 Milestone Tasklist

1. At least a week prior to the RC1 date, email a reminder to vpp-dev@lists.fd.io about VPP RC1 Milestone. See an example email or another example email.

2. Resend reminder a day or two prior to the RC1 date.

Pulling a VPP Throttle Branch

NOTE: Steps 3 and 4 can be done any time prior to RC1 branch day. At the very least, discuss the requirements with the individuals ahead of time to set the correct expectations.

3. Request LF Admin (via fd.io helpdesk) create Nexus repositories

Have LF admin staff create in nexus new repositories of the form "fd.io.${branchpart}.${distropart}" where branchpart is of the form stable.YYMM (example stable.1804) and the distropart is one of the supported distributions.

At the current time (circa 19.04), we currently support the ubuntu.xenial.main, ubuntu.bionic.main, ubuntu-arm.bionic.main, and centos7 distributions. NOTE: The Nexus package manager has problems with bionic packages, thus while the build infrastructure still uploads packages to nexus.fd.io as well as packagecloud.io, the Installing VPP Binaries from Packages refer solely to packagecloud.io, thus validation of the nexus packages (other than bionic packages) is recommended, but not strictly necessary.

For example:

 Hello fd.io helpdesk!

 Could you create the Nexus repositories required for the VPP 19.04 release, please?

 Per https://wiki.fd.io/view/VPP/CommitterTasks/PullThrottleBranch these should be named:

 fd.io.stable.1904.ubuntu.xenial.main
 fd.io.stable.1904.ubuntu-arm.bionic.main
 fd.io.stable.1904.ubuntu.bionic.main
 fd.io.stable.1904.centos7

 Note that the centos repository should be setup as a Yum repository, to enable the task that generates the index files.
 Please also run the indexing task manually to generate an empty index.

 Thanks,
 <name>

NOTE: In the message to the helpdesk we indicate that the Centos repository is also a Yum repository and needs the indexing task setup. If this is not done then the Centos merge job will fail with a message in the console output that Yum could not retrieve that index.

4. Request Ed Warnicke create the package cloud repos.

Send and email to Ed Warnicke (eaw@cisco.com and/or hagbard@gmail.com) reminding him to create the package cloud repositories for the new release and remind him to ensure that all of the platform repo's contain at least one package. If lets say, the bionic repo does not contain any packages, then the build will fail in a non-intuitive manner that may require a day's worth of troubleshooting to resolve.

NOTE: If these do not exist or the permissions for them are wrong, then the merge jobs will fail after uploading build artifacts to nexus.fd.io

5. Jenkins: (can be done and merged some days before the date of pulling the branch) - In the ci-management Git repo, edit jjb/vpp/vpp.yaml:

a. https://git.fd.io/ci-management/tree/jjb/vpp/vpp.yaml#n49
add a new 'stream' for your new YYMM. Example for stable/1801:
- '1801':
            branch: 'stable/1801’'
            repo-stream-part: 'stable.1801'
b. https://git.fd.io/ci-management/tree/jjb/vpp/vpp.yaml#n87
likewise add a new stream here. Exactly the same idea as the previous step.
c. Example: https://gerrit.fd.io/r/9934/
d. Similarly, edit jjb/vpp/docs.yaml
add a new 'stream' for your new YYMM. Example for stable/1904:
- '1904':
            branch: 'stable/1904’'
            repo-stream-part: 'stable.1904'
e. Example: https://gerrit.fd.io/r/#/c/18982/

6. Create a new branch stable/YYMM (example: stable/1801) in the Gerrit web UI against the point on master you wish to be cutting the branch (usually HEAD at the time you’re cutting).

a. https://gerrit.fd.io/r/#/admin/projects/vpp,branches

7. On master, edit vpp/RELEASE.md and add a placeholder for the next release and merge the patch on master. This will be the commit that the next release -rc0 tag is placed on.

For example: https://gerrit.fd.io/r/#/c/18803/

8. Lay down a tag for the next release RC0 (e.g. 1804-rc0) on master.

9. On stable/YYMM (example: stable/1801) prepare a commit which updates the .gitreview to reflect the correct branch

a. Examples:
https://gerrit.fd.io/r/#/c/1157/1/.gitreview
https://gerrit.fd.io/r/#/c/9937/
b. Merge patch onto the new stable branch

NOTE: Verify that this patch is in fact on the new stable branch, and not on master!

10. Lay down a tag (v18.01-rc1) on stable/1801 at the point of the patch you just merged.

NOTE: If the verification steps in 11 & 12 don't happen by the end of the day, it is best to send an email re-opening master to commits.

11. Verify that the nexus repos have packages with the correct version and are working

a. Remerge the patch from step 7
b. When the remerge from step 7 is complete, verify that the correct package versions have been uploaded onto the nexus server
https://nexus.fd.io/content/repositories/fd.io.stable.YYMM.centos7/
https://nexus.fd.io/content/repositories/fd.io.stable.YYMM.ubuntu.xenial.main/
c. Examples
https://nexus.fd.io/content/repositories/fd.io.stable.1801.centos7/
https://nexus.fd.io/content/repositories/fd.io.stable.1801.xenial.main/
d. Verify that package like artifacts are present in all the above git repos by looking for:
  • Non-zero sized ‘Package’ in the apt repos (xenial)
  • A repodata/ subdir in the yum repo (centos7)
e. Update the Installing VPP Binaries from Packages Wiki page with instructions for the new branch, and test that you can install packages from packagecloud.io

12. Verify that the nexus and packagecloud.io repos have packages with the correct version and are working

a. Remerge the last merged patch on master
b. When the remerge of the last patch on master is complete, go look for package with the correct versions at:
https://nexus.fd.io/content/repositories/fd.io.master.centos7/
https://nexus.fd.io/content/repositories/fd.io.master.ubuntu.xenial.main/
c. Verify that package like artifacts are present in all the above git repos by looking for:
  • Non-zero sized ‘Package’ in the apt repos (xenial)
  • A repodata/ subdir in the yum repo (for centos7)
d. Follow instructions on VPP/Installing_VPP_binaries_from_packages and verify that packages with the new versions are installed on packagecloud.io

13. Send the all-clear message. Example.

14. If the Jira steps from VPP/CommitterTasks/ApiFreeze#Jira_versions didn't happen yet, do them now.

Amend as necessary with any caveats; for example the 1804 RC1 milestone opened master and stable on different days while minor issues were resolved.

Historical Recipes

Steps for cutting Master to XXYY-rc0

VPP 16.09-RC0 cut punchlist