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