Cobalt versions, as they appear in the user agent, use semantic versioning and have the following structure:
[Major Version].[Purpose].[Minor Version].[Build ID]
The definitions of these version structure components are described below.
Example Cobalt versions would be:
24.lts.1.103241324.lts.2.103246424.lts.3.103250124.lts.10.103262224.lts.12.103269224.lts.20.1032766...24.lts.40.1032940Cobalt major version is tied to a yearly release cycle and this number indicates the yearly set that this version of Cobalt supports. It is the last two digits of the year of the target yearly set. For example for the 2024 yearly set, this value will be 24.
The purpose of this build, usually named after the reason that a branch is cut. On the master branch it will be master, and on LTS branches for example it will be lts.
The current update revision number (e.g. release number). This will always be 0 on the master branch. When a release branch is cut, will be modified to start at 1, and be incremented each time a release or update is released. It is possible that multiple updates are released off of the same release branch, if new bugs are discovered and fixed.
The Cobalt Build ID represents fine-grained information about the state of the source tree for a given build. The number is simply a sequential, monotonically increasing commit number. E.g. every cherry-picked or merged commit on the release branch increments it by one.
A src/cobalt/build/get_build_id.py script is used during the build to resolve the build ID number during builds, and can be similarly used to verify it in a checkout. Here is an example to get the Build ID in 24.lts.40 tag:
$ git checkout 24.lts.40 HEAD is now at ecdcfdb8e5a Cherry pick PR #3084: Add idl definition for PersistentSettingLogtraceEnable getter and setter (#3091) $ cobalt/build/get_build_id.py 1032940 # An example to remove two commits $ git reset --hard HEAD^^ HEAD is now at 0fab5f48a97 Cherry pick PR #2930: Add blackbox test for logTrace and watchdog violations APIs. (#3059) # The Build ID is decreased by two $ cobalt/build/get_build_id.py 1032938
Starting with Cobalt 24, the version numbering scheme for LTS Major and Minor Stable releases are now numbered by multiples of 10. This change aligns with semantic versioning, adds more sensible differentiation for Stable vs incremental non-Stable releases, and enables the Cobalt team to deliver faster fixes, optimizations, and features to our mutual users. Please only use Cobalt LTS releases with Minor Version that are multiples of 10 for YouTube Certification and Cobalt Device Maintenance Updates.
NOTE: Pre-built Evergreen binaries are only available for Stable (non-RC) releases at this time and available on the release page:
| Cobalt Release | Stable (Usable for cert)? |
|---|---|
| 24.lts.1 | No |
| 24.lts.2 | No |
| 24.lts.3 | No |
| 24.lts.10 | Yes |
| 24.lts.11 | No |
| 24.lts.12 | No |
| 24.lts.20 | Yes |