xref: /aosp_15_r20/external/perfetto/docs/visualization/perfetto-ui-release-process.md (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1# Perfetto UI Release Process
2
3The UI has three release channels which are configured by the
4[channels.json](/ui/release/channels.json) file. The channels are:
5
6- `stable`, the version served by default on ui.perfetto.dev.
7  Updated every four weeks.
8- `canary`, a less stable but fresher release. Updated every 1-2 weeks.
9- `autopush`, the current HEAD version of the UI. Unstable.
10
11The release process is based around a four week cycle.
12
13- Week 1: Update `canary` to `HEAD`.
14- Week 2: Update `canary` to `HEAD`.
15  Canary stabilization week 1/2 starts here.
16  Only critical bug fixes can be cherry-picked onto `canary`.
17- Week 3: Canary stabilization week 2/2.
18- Week 4: Update `stable` to current `canary`, update `canary` to `HEAD`.
19
20After the fourth week the cycle repeats from week one.
21This is so that:
22
23- Canary soaks for two weeks before being promoted to stable.
24- Newer features can be tried out in Canary within a week, or two at most (if
25  in the stabilization weeks).
26- Stable users aren't disrupted more than once per month.
27
28## Changing release channel
29
30NOTE: The channel setting is persistent across page reloads.
31
32The channel the UI is currently using is displayed in the top left corner.
33If the tag after the logo shows `autopush` or `canary` that is the current channel
34and if no tag is displayed the current channel is `stable`.
35
36![perfetto-ui-channel.png](/docs/images/perfetto-ui-channel.png)
37
38To change the channel the UI is using between `stable` and `canary` you can use the toggle on the [entrance page](https://ui.perfetto.dev).
39
40![perfetto-ui-channel-toggle.png](/docs/images/perfetto-ui-channel-toggle.png)
41
42To change to the `autopush` channel, open the `Flags` screen in the `Support`
43section of the sidebar, and choose `Autopush` in `Release channel`.
44
45![perfetto-ui-channel-autopush-toggle.png](/docs/images/perfetto-ui-channel-autopush-toggle.png)
46
47## Which version am I using?
48
49You can see the version of the UI you are currently using in the bottom left hand corner of the UI.
50
51![perfetto-ui-version.png](/docs/images/perfetto-ui-version.png)
52
53Clicking 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
54[CHANGELOG](/CHANGELOG).
55
56## Cherry-picking a change
57
58If a change needs to be backported onto canary or stable branches, do the
59following:
60
61```bash
62git fetch origin
63git co -b ui-canary -t origin/ui-canary
64git cherry-pick -x $SHA1_OF_ORIGINAL_CL
65git cl upload
66
67# Repeat for origin/ui-stable branch if needed.
68```
69
70Once the cherry-picks are landed, send out a CL to update the
71[channels.json](/ui/release/channels.json) in the `main` branch. See
72[r.android.com/1726101](https://r.android.com/1726101) for an example.
73
74```json
75{
76  "channels": [
77    {
78      "name": "stable",
79      "rev": "6dd6756ffbdff4f845c4db28e1fd5aed9ba77b56"
80      //     ^ This should point to the HEAD of origin/ui-stable.
81    },
82    {
83      "name": "canary",
84      "rev": "3e21f613f20779c04b0bcc937f2605b9b05556ad"
85      //     ^ This should point to the HEAD of origin/ui-canary.
86    },
87    {
88      "name": "autopush",
89      "rev": "HEAD"
90      //     ^ Don't touch this one.
91    }
92  ]
93}
94```
95
96The state of `channels.json` in the other branches is irrelevant, the release
97infrastructure only looks at the `main` branch to determine the pinning of
98each channel.
99
100After the `channels.json` CL lands, the build infrastructure will pick it up
101and update ui.perfetto.dev within ~30 mins.
102
103Googlers: You can check build progress and logs on
104[go/perfetto-ui-build-status](http://go/perfetto-ui-build-status). See also
105[go/perfetto-ui-autopush](http://go/perfetto-ui-autopush) and
106[go/perfetto-ui-channels](http://go/perfetto-ui-channels) for the design docs of
107the serving infrastructure.
108
109## Publishing the Perfetto Chrome extension
110Googlers: see go/perfetto-release-chrome-extension
111