-
Notifications
You must be signed in to change notification settings - Fork 710
VPP Pushing_and_Testing_a_Tag
The vpp package builds utilize
git describe
to construct the versions for Ubuntu and Debian packages built. This is done by the
build-root/scripts/version
script. Because of this when we want to change versions, we need to lay a tag, and then test to see that what we expected to happen happens.
This page covers how to push and test a tag on existing branches, it does *not* cover pulling new branches.
vpp's branching structure currently is:
----------- master ---------------------------->
\
\------ stable/1606------->
The master branch is where the bulk of development takes place.
The stable/1606 branch is the 'throttle' for preparing the 16.06 release. Only bug fixes should go into stable/1606.
It is expected that we will in the future carry forward a similar structure, example:
----------- master ------------------------------------------------------------------------>
\ \
\------ stable/1606-------> \---------stable/1609----->
git describe walks back through the history of the specified (in this case current) commit till it finds a tag. If two or more tags are found on that commit, it will pick the newest tag. (note: its more complicated than this in corner cases which we should not hit, feel free to read the git describe manpage.
- Tags are to be annotated (and preferably signed)
- Tags are of the format "${next release version for this branch}-${optional rc}"
- ${next release version for this branch} for a "stable/${YY}${MM}" branch is "v${YY}.${MM}"
- ${optional rc} is of the form rc0 (note lower case rc) on master
- ${optional rc} is of the form rc1 or rc2 (note lower case rc) on "stable/${YY}${MM}" branches
Examples:
- If the next release after 16.06 is to be 16.09, then the tag set on master after the pulling of stable/1606 would be v16.09-rc0
- If the next release is 16.06 then the first tag on the branch stable/1606 should be v16.06-rc1
- Note: that first tag on stable/1606 should be set on the first commit to stable/1606 that is *not* a commit on master. This is to avoid issues with mis-picking of tags if both are on the same commit (one shared between master and stable/1606).
- Identify the commit you wish to tag & Check out that commit
- Lay the annotated (and preferably signed) tag locally
- Test locally using build-root/scripts/version
- Push tag to gerrit
- Verify the tag remotely
Typically (but not always), you will want to check out the HEAD of the branch you are laying a tag on.
Example:
git checkout stable/1606
and make sure its up to date:
git pull
Lay the annotated (and preferably signed) tag locally
If you are going to lay a signed tag:
git tag -s ${tagname} -m ${tag annotation}
If you are going to lay an unsigned annotated tag:
git tag -a ${tagname} -m ${tag annotation}
Examples:
For a tag for stable/1606 for RC2 (signed):
git tag -s v16.06-rc2 -m "Version 16.06-rc2"
For a tag on stable/1606 for RC2 (unsigned):
git tag -a v16.06-rc2 -m "Version 16.06-rc2"
First verify your tag is as you expect it:
git show ${tagname}
Example:
git show v16.06-rc2
Then run
src/scripts/version
which should return
${tagname suppressing the leading 'v'}
In our example:
16.06-rc2
git push origin ${tag}
NOTE: this is an "emergency" procedure and only recommended if necessary (like in the case of a release where there is a commit required after the release tag was created). If you need to move a tag forward, simply delete the existing tag, then create the new one per the above Mechanics of Tagging procedure.
Make sure to delete tag from both the local and remote repo.
git tag -d <tagname>
git push origin :refs/tags/<tagname>
The above procedure most probably will not work with Gerrit, with the following diagnostic:
ubuntu@vpp-dev:~/vpp$ git push origin :refs/tags/v20.09
Username for 'https://gerrit.fd.io': ayourtch
Password for 'https://[email protected]':
remote: error: branch refs/tags/v20.09:
remote: You need 'Delete Reference' rights or 'Push' rights with the
remote: 'Force Push' flag set to delete references.
remote: User: ayourtch
remote: Contact an administrator to fix the permissions
remote: Processing changes: refs: 1, done
To https://gerrit.fd.io/r/vpp
! [remote rejected] v20.09 (prohibited by Gerrit: not permitted: delete)
error: failed to push some refs to 'https://gerrit.fd.io/r/vpp'
ubuntu@vpp-dev:~/vpp$
If that happens, go to gerrit GUI listing the tags here: https://gerrit.fd.io/r/admin/repos/vpp,tags - you should have the permissions to delete the tag from the GUI. Wait for the git.fd.io to show that the tag has disappeared, to ensure no inconsistencies for the jobs.
- VPP 2022 Make Test Use Case Poll
- VPP-AArch64
- VPP-ABF
- VPP Alternative Builds
- VPP API Concepts
- VPP API Versioning
- VPP-ApiChangeProcess
- VPP-ArtifactVersioning
- VPP-BIER
- VPP-Bihash
- VPP-BugReports
- VPP Build System Deep Dive
- VPP Build, Install, And Test Images
- VPP-BuildArtifactRetentionPolicy
- VPP-c2cpel
- VPP Code Walkthrough VoD
- VPP Code Walkthrough VoD Topic Index
- VPP Code Walkthrough VoDs
- VPP-CodeStyleConventions
- VPP-CodingTips
- VPP Command Line Arguments
- VPP Command Line Interface CLI Guide
- VPP-CommitMessages
- VPP-Committers-SMEs
- VPP-CommitterTasks-ApiFreeze
- VPP CommitterTasks Compare API Changes
- VPP-CommitterTasks-CutPointRelease
- VPP-CommitterTasks-CutRelease
- VPP-CommitterTasks-FinalReleaseCandidate
- VPP-CommitterTasks-PullThrottleBranch
- VPP-CommitterTasks-ReleasePlan
- VPP Configuration Tool
- VPP Configure An LW46 MAP E Terminator
- VPP Configure VPP As A Router Between Namespaces
- VPP Configure VPP TAP Interfaces For Container Routing
- VPP-CoreFileMismatch
- VPP-cpel
- VPP-cpeldump
- VPP-CurrentData
- VPP-DHCPKit
- VPP-DHCPv6
- VPP-DistributedOwnership
- VPP-Documentation
- VPP DPOs And Feature Arcs
- VPP EC2 Instance With SRIOV
- VPP-elog
- VPP-FAQ
- VPP Feature Arcs
- VPP-Features
- VPP-Features-IPv6
- VPP-FIB
- VPP-g2
- VPP Getting VPP 16.06
- VPP Getting VPP Release Binaries
- VPP-HA
- VPP-HostStack
- VPP-HostStack-BuiltinEchoClientServer
- VPP-HostStack-EchoClientServer
- VPP-HostStack-ExternalEchoClientServer
- VPP HostStack Hs Test
- VPP-HostStack-LDP-iperf
- VPP-HostStack-LDP-nginx
- VPP-HostStack-LDP-sshd
- VPP-HostStack-nginx
- VPP-HostStack-SessionLayerArchitecture
- VPP-HostStack-TestHttpServer
- VPP-HostStack-TestProxy
- VPP-HostStack-TLS
- VPP-HostStack-VCL
- VPP-HostStack-VclEchoClientServer
- VPP-Hotplug
- VPP How To Add A Tunnel Encapsulation
- VPP How To Build The Sample Plugin
- VPP How To Connect A PCI Interface To VPP
- VPP How To Create A VPP Binary Control Plane API
- VPP How To Deploy VPP In EC2 Instance And Use It To Connect Two Different VPCs
- VPP How To Optimize Performance %28System Tuning%29
- VPP How To Use The API Trace Tools
- VPP How To Use The C API
- VPP How To Use The Packet Generator And Packet Tracer
- VPP-Howtos
- VPP-index
- VPP Installing VPP Binaries From Packages
- VPP Interconnecting vRouters With VPP
- VPP Introduction To IP Adjacency
- VPP Introduction To N Tuple Classifiers
- VPP IP Adjacency Introduction
- VPP-IPFIX
- VPP-IPSec
- VPP IPSec And IKEv2
- VPP IPv6 SR VIRL Topology File
- VPP Java API
- VPP Java API Plugin Support
- VPP Jira Workflow
- VPP-Macswapplugin
- VPP-MakeTestFramework
- VPP-Meeting
- VPP-MFIB
- VPP Missing Prefetches
- VPP Modifying The Packet Processing Directed Graph
- VPP MPLS FIB
- VPP-NAT
- VPP Nataas Test
- VPP-OVN
- VPP Per Feature Notes
- VPP Performance Analysis Tools
- VPP-perftop
- VPP Progressive VPP Tutorial
- VPP Project Meeting Minutes
- VPP Pulling, Building, Running, Hacking And Pushing VPP Code
- VPP Pure L3 Between Namespaces With 32s
- VPP Pure L3 Container Networking
- VPP Pushing And Testing A Tag
- VPP Python API
- VPP-PythonVersionPolicy
- VPP-QuickTrexSetup
- VPP Random Hints And Kinks For KVM Usage
- VPP Release Plans Release Plan 16.09
- VPP Release Plans Release Plan 17.01
- VPP Release Plans Release Plan 17.04
- VPP Release Plans Release Plan 17.07
- VPP Release Plans Release Plan 17.10
- VPP Release Plans Release Plan 18.01
- VPP Release Plans Release Plan 18.04
- VPP Release Plans Release Plan 18.07
- VPP Release Plans Release Plan 18.10
- VPP Release Plans Release Plan 19.01
- VPP Release Plans Release Plan 19.04
- VPP Release Plans Release Plan 19.08
- VPP Release Plans Release Plan 20.01
- VPP Release Plans Release Plan 20.05
- VPP Release Plans Release Plan 20.09
- VPP Release Plans Release Plan 21.01
- VPP Release Plans Release Plan 21.06
- VPP Release Plans Release Plan 21.10
- VPP Release Plans Release Plan 22.02
- VPP Release Plans Release Plan 22.06
- VPP Release Plans Release Plan 22.10
- VPP Release Plans Release Plan 23.02
- VPP Release Plans Release Plan 23.06
- VPP Release Plans Release Plan 23.10
- VPP Release Plans Release Plan 24.02
- VPP Release Plans Release Plan 24.06
- VPP Release Plans Release Plan 24.10
- VPP Release Plans Release Plan 25.02
- VPP Release Plans Release Plan 25.06
- VPP Release Plans Release Plan 25.10
- VPP Release Plans Release Plan 26.02
- VPP Release Plans Release Plan 26.06
- VPP-RM
- VPP-SecurityGroups
- VPP Segment Routing For IPv6
- VPP Segment Routing For MPLS
- VPP Setting Up Your Dev Environment
- VPP-SNAT
- VPP Software Architecture
- VPP STN Testing
- VPP The VPP API
- VPP Training Events
- VPP-Troubleshooting
- VPP-Troubleshooting-BuildIssues
- VPP-Troubleshooting-Vagrant
- VPP Tutorial DPDK And MacSwap
- VPP Tutorial Routing And Switching
- VPP-Tutorials
- VPP Use VPP To Chain VMs Using Vhost User Interface
- VPP Use VPP To Connect VMs Using Vhost User Interface
- VPP Using mTCP User Mode TCP Stack With VPP
- VPP Using VPP As A VXLAN Tunnel Terminator
- VPP Using VPP In A Multi Thread Model
- VPP-VOM
- VPP VPP BFD Nexus
- VPP VPP Home Gateway
- VPP VPP WIKI DEPRECATED CONTENT
- VPP-VPPCommunicationsLibrary
- VPP-VPPConfig
- VPP What Is ODP4VPP
- VPP What Is VPP
- VPP Working Environments
- VPP Working With The 16.06 Throttle Branch