109 lines
3.8 KiB
Markdown
109 lines
3.8 KiB
Markdown
# Perfetto UI Release Process
|
|
|
|
The UI has three release channels which are configured by the
|
|
[channels.json](/ui/release/channels.json) file. The channels are:
|
|
|
|
- `stable`, the version served by default on ui.perfetto.dev.
|
|
Updated every four weeks.
|
|
- `canary`, a less stable but fresher release. Updated every 1-2 weeks.
|
|
- `autopush`, the current HEAD version of the UI. Unstable.
|
|
|
|
The release process is based around a four week cycle.
|
|
|
|
- Week 1: Update `canary` to `HEAD`.
|
|
- Week 2: Update `canary` to `HEAD`.
|
|
Canary stabilization week 1/2 starts here.
|
|
Only critical bug fixes can be cherry-picked onto `canary`.
|
|
- Week 3: Canary stabilization week 2/2.
|
|
- Week 4: Update `stable` to current `canary`, update `canary` to `HEAD`.
|
|
|
|
After the fourth week the cycle repeats from week one.
|
|
This is so that:
|
|
|
|
- Canary soaks for two weeks before being promoted to stable.
|
|
- Newer features can be tried out in Canary within a week, or two at most (if
|
|
in the stabilization weeks).
|
|
- Stable users aren't disrupted more than once per month.
|
|
|
|
## Changing release channel
|
|
|
|
NOTE: The channel setting is persistent across page reloads.
|
|
|
|
The channel the UI is currently using is displayed in the top left corner.
|
|
If the tag after the logo shows `autopush` or `canary` that is the current channel
|
|
and if no tag is displayed the current channel is `stable`.
|
|
|
|

|
|
|
|
To change the channel the UI is using between `stable` and `canary` you can use the toggle on the [entrance page](https://ui.perfetto.dev).
|
|
|
|

|
|
|
|
To change to the `autopush` channel, open the `Flags` screen in the `Support`
|
|
section of the sidebar, and choose `Autopush` in `Release channel`.
|
|
|
|
## Which version am I using?
|
|
|
|
You can see the version of the UI you are currently using in the bottom left hand corner of the UI.
|
|
|
|

|
|
|
|
Clicking on the version number takes you to Github where you can see which commits are part of this version. The version number format is `v<maj>.<min>.<Commit SHA1 prefix>` where `<maj>.<min>` are extracted from the top entry in the
|
|
[CHANGELOG](/CHANGELOG).
|
|
|
|
## Cherry-picking a change
|
|
|
|
If a change needs to be backported onto canary or stable branches, do the
|
|
following:
|
|
|
|
```bash
|
|
git fetch origin
|
|
git co -b ui-canary -t origin/ui-canary
|
|
git cherry-pick -x $SHA1_OF_ORIGINAL_CL
|
|
git cl upload
|
|
|
|
# Repeat for origin/ui-stable branch if needed.
|
|
```
|
|
|
|
Once the cherry-picks are landed, send out a CL to update the
|
|
[channels.json](/ui/release/channels.json) in the `master` branch. See
|
|
[r.android.com/1726101](https://r.android.com/1726101) for an example.
|
|
|
|
```json
|
|
{
|
|
"channels": [
|
|
{
|
|
"name": "stable",
|
|
"rev": "6dd6756ffbdff4f845c4db28e1fd5aed9ba77b56"
|
|
// ^ This should point to the HEAD of origin/ui-stable.
|
|
},
|
|
{
|
|
"name": "canary",
|
|
"rev": "3e21f613f20779c04b0bcc937f2605b9b05556ad"
|
|
// ^ This should point to the HEAD of origin/ui-canary.
|
|
},
|
|
{
|
|
"name": "autopush",
|
|
"rev": "HEAD"
|
|
// ^ Don't touch this one.
|
|
}
|
|
]
|
|
}
|
|
```
|
|
|
|
The state of `channels.json` in the other branches is irrelevant, the release
|
|
infrastructure only looks at the `master` branch to determine the pinning of
|
|
each channel.
|
|
|
|
After the `channels.json` CL lands, the build infrastructure will pick it up
|
|
and update ui.perfetto.dev within ~30 mins.
|
|
|
|
Googlers: You can check build progress and logs on
|
|
[go/perfetto-ui-build-status](http://go/perfetto-ui-build-status). See also
|
|
[go/perfetto-ui-autopush](http://go/perfetto-ui-autopush) and
|
|
[go/perfetto-ui-channels](http://go/perfetto-ui-channels) for the design docs of
|
|
the serving infrastructure.
|
|
|
|
## Publishing the Perfetto Chrome extension
|
|
Googlers: see go/perfetto-release-chrome-extension
|