blob: d0a7cb68cd0bf61504335df0d26448f1615ce270 [file] [log] [blame] [view]
Eric Fooff7b4982017-12-19 01:59:151# A Tour of Continuous Integration UI
2
3This document details a tour of page layouts and site hierarchy for [LUCI
4UI](https://ci.chromium.org/p/chromium), Chromium's continuous integration user
5interface. Currently, LUCI shows both Buildbot and LUCI builds. In the near
6future, LUCI will replace Buildbot as the default continuous integration system.
7Read this document to learn how to navigate LUCI and to better understand the
8new UX concepts LUCI introduces. Refer to the [FAQ](#FAQ) to quickly jump to
9sections.
10
11[TOC]
12
13## FAQ
14
15**Where can I see the console view for my builders?**
16
17*Using this URL schema, `ci.chromium.org/p/<project_id>/g/<group_id>/console`,
18replace `<project_id>` with the project ID and `<group_id>` with the group ID.
19For example, [Chromium Main](http://ci.chromium.org/p/chromium/g/main/console).
20See [console view page](#Console-view-page) section below for details on the
21page.*
22
23**Why are we replacing Buildbot with LUCI?**
24
25*Buildbot is slow and doesn't scale well. LUCI fixes this and over time, we have
26already been swapping out Buildbot responsibilities with LUCI services. See
27[Background section](#Background) for more details.*
28
29**What are the LUCI pages I should expect to see?**
30
31*[Jump](#Tour-of-LUCI-Pages) to the Tour of LUCI Pages section to see details on
32each page.*
33
34**Is LUCI only for the Chromium project?**
35
36_The overall goal is to have LUCI serve all projects (wherever possible) that
37Buildbot currently serves. The 11/30 UI rollout is limited to chromium.* masters
38and tryserver.chromium.* + tryserver.blink masters. Other projects/masters will
39switch to LUCI UI at later notice._
40
41**Is there a list of Known Issues?**
42
43_A list of known user interface issues can be viewed in [Chromium
44bugs](https://bugs.chromium.org/p/chromium/issues/list?q=label%3Aluci-knownissues-ui)._
45
46**What happened to Masters?**
47
48_LUCI no longer uses Masters and distributes the responsibility of scheduling,
49distributing, collecting, archiving and logging builds into separate independent
50services. As a UI concept, "masters" are replaced with "groups" and "views". See
51[Background section](#Background) for more details._
52
53**What is a Group?**
54
55_Builders of each project are organized into groups of ordered builders (A
56single builder can be referenced by multiple groups). See [Site Hierarchy
57section](#Site-Hierarchy) for more details._
58
59**What is a View?**
60
61*A group of builders and their builds can be visualized in a couple ways; we
62call these views. See [Site Hierarchy section](#Site-Hierarchy) for more
63details.*
64
65**Are URLs final?**
66
67*No. URLs and pages are subject to change. Our initial goal is to provide
68Buildbot functionality parity, but we are committed to building additional
69enhanced user experiences on top of the new LUCI UI.*
70
71**How do I provide feedback?**
72
73*LUCI UI is still in development and we would love to get feedback, please see
74[feedback section](#Feedback) for links.*
75
76
77## Tour of LUCI Pages
78
79**Please note** that URLs and pages are subject to change. Our initial goal is
80to provide Buildbot functionality, but we are committed to building additional
81enhanced user experiences on top of the new LUCI UI.
82
83
84### High level pages
85
86
87#### Home
88
89**URL:** [ci.chromium.org](http://ci.chromium.org/)
90
91This is the "Home" page for LUCI. It contains a listing of all of the projects
92configured in LUCI.
93
94![Home page for LUCI](images/LUCI-Home.png "LUCI Home Page")
95
96
97#### Search
98
99**URL:** [ci.chromium.org/search](http://ci.chromium.org/search)
100
101This is the builder search page for LUCI. Find a specific builder serviced by
102LUCI by name. Search results are sorted by bucket and groups. This can also be
103accessed by typing "ci.<tab>" in the Chrome Omnibox.
104
105![Search page for LUCI](images/LUCI-Search.png "LUCI Search Page")
106
107#### Project page
108
109**URL:** `ci.chromium.org/p/<project_id>`
110
111Example: [ci.chromium.org/p/chromium](http://ci.chromium.org/p/chromium)
112
113A list of the groups defined for the project. A group is an ordered list of
114builders (Builders can be referenced by multiple groups). This page contains
115links to the default view defined for each group and the
116last-completed-build-status for each builder.
117
118Refer to the build results [color key](#Color-Key) on how to interpret the build
119status.
120
121**Note:** Initially, we have defined "groups" of builders corresponding to a
122Buildbot master and included builders that used to be attached to it.
123
124![An example project page on LUCI](images/LUCI-Project.png "LUCI Project Page")
125
126
127#### Builders list page per project
128
129**URL:** `ci.chromium.org/p/<project_id>/builders`
130
131Example:
132[ci.chromium.org/p/chromium/builders](http://ci.chromium.org/p/chromium/builders)
133
134Shows a listing of all builders belonging to the *`<project_id>`*. Each builder
135shows number of builds pending, in-progress and the build statuses of the last
13630 recently completed builds by default (option available to show more).
137
138Refer to the build results [color key](#Color-Key) on how to interpret the build
139status.
140
141![An example builders per project page](images/LUCI-Project-Builders.png "LUCI
142builders page per project")
143
144
145### Project Resource pages
146
147These pages display a singular resource that *belongs to* the project
148(currently, Builders and Build Results).
149
150
151#### Builder page
152
153**Buildbot Builder URL:** `ci.chromium.org/buildbot/<group_id>/<builder_name>`
154
155**LUCI Builder URL:**
156`ci.chromium.org/p/<project_id>/builders/<bucket>/<builder_name>`
157
158This is the page describing the builder and lists machine pool, current builds,
159pending builds and recent builds completed. The layout is equivalent to Buildbot
160layout of builder pages.
161
162![An example builder page](images/LUCI-Builder.png "LUCI Builder Page")
163
164
165#### Build Results page
166
167**Buildbot Build URL:** `
Eric Foob0eda442018-01-04 02:00:45168ci.chromium.org/buildbot/<group_id>/<builder_name>/<build_#>`
Eric Fooff7b4982017-12-19 01:59:15169
170**LUCI Build URL:**
Eric Foob0eda442018-01-04 02:00:45171`ci.chromium.org/p/<project_id>/builders/<bucket>/<builder_name>/<build_#>`
172
173*Alternate LUCI Build URL: `ci.chromium.org/p/<project_id>/builds/b<buildbucket_build_id>`*
Eric Fooff7b4982017-12-19 01:59:15174
175This is the page describing the build and results. Contains build info,
176properties, result status, blame-list, steps and links to log files. The layout
Eric Foob0eda442018-01-04 02:00:45177is equivalent to Buildbot layout of build result pages.
178
179Builds can also have an alternate LUCI build URL under
180`ci.chromium.org/p/<project_id>/builds/b<buildbucket_build_id>` if the build does
181not have a “buildnumber” property. This does not apply to Chromium builds since
182all Chromium builds have a buildnumber property.
Eric Fooff7b4982017-12-19 01:59:15183
184![An example build result page](images/LUCI-Build.png "LUCI Build Page")
185
186
187### View pages
188
189Each group has multiple views (currently "console" and "builders" views).
190Later, we may add additional views (e.g. "stats"). Views are the primary reason
191to create a group; For example, you put builders into the "main" group so that
192they show up on main/console.
193
194
195#### Console view page
196
197**URL:** `ci.chromium.org/p/<project_id>/g/<group_id>/console`
198
199Example:
200[ci.chromium.org/p/chromium/g/main/console](http://ci.chromium.org/p/chromium/g/main/console)
201
202A high-level overview of the recently completed builds. Contains most relevant
203information on the Group, including tree status, on-call information, important
204links, sub groups, and builds ordered by latest commits by users over all
205platform builders. Refer to the build results [color key](#Color-Key) on how to
206interpret the build status.
207
208![An example console view page for a group](images/LUCI-Console-View.png "LUCI
209console view page")
210
211
212**Tree Status**
213
214The "tree" represents the various source repositories used to build the project,
215e.g. chromium/src.git plus its
216[DEPS](http://src.chromium.org/viewvc/chrome/trunk/src/DEPS?view=markup) file.
217**Tree status **displays the state of the tree corresponding to the project and
218determines whether or not developers are allowed to commit to the repositories.
219The tree can be "open", "closed" or "throttled". The normal state is open. When
220vital builders fail or tests break, the tree is closed by putting the word
221"closed" in the tree status;
222[PRESUBMIT.py](http://src.chromium.org/viewvc/chrome/trunk/src/PRESUBMIT.py?view=markup)
223checks the status and will block commits, and the build sheriff will act to fix
224the tree. When the tree is throttled, commits are only allowed with specific
225permission from the build sheriff, generally because the sheriff wants to make
226sure the tree is stable before opening it up to unlimited commits.
227
228
229**On-call Info**
230
231This is the list of list the current build sheriffs and troopers. The sheriffs
232have overall responsibility in case someone else is away or not paying
233attention.
234
235
236**Commits/CLs**
237
238Each time someone lands a change, the scheduler gathers changes and schedules
239builds and tests on all relevant builders. Each row in the table represents a
240commit and resulting builds across the various builders. The columns are sorted
241by build configuration and platform. A build can span multiple commits, in the
242event that commits land faster than the builder can cycle. At the start of each
243build, a yellow box is displayed. Clicking on the box shows more information
244about the build, including the "blamelist" of changes that went into it and
245detailed step/log information for the build (See [build
246results](#Build-Results-page) page for more details). The times shown in the
247table are in U.S. Pacific time.
248
249Refer to the build results [color key](#Color-Key) on how to interpret the build
250status.
251
252
253#### Builders view page
254
255**URL:** `ci.chromium.org/p/<project_id>/g/<group_id>/builders`
256
257Example:
258[ci.chromium.org/p/chromium/g/main/builders](http://ci.chromium.org/p/chromium/g/main/builders)
259
260Builders view page for the group_id under project_id. Shows all builders of this
261group. Each builder shows number of builds pending, in-progress and the build
262statuses of the last 30 recently completed builds by default (option available
263to show more).
264
265![An example builders view page for a group](images/LUCI-Builders-View.png "LUCI
266builders view Page")
267
268
269### Color Key
270
271Throughout LUCI, we visualize a build results using colored boxes, where the
272color signifies the build result status. Below is the color key mapping.
273
274* <span style="color:yellow">Yellow</span> = in progress
275* <span style="color:green">Green</span> = finished successfully
276* <span style="color:red">Red</span> = finished with errors
277* <span style="color:purple">Purple</span> = internal error.
278
279## Background
280
281LUCI which stands for Layered Universal Continuous Integration is a replacement
282for Buildbot (our existing single-threaded monolithic continuous integration
283system). LUCI is made up of a number of independent services that work together,
284each service dealing with one part of the continuous integration stack. Over
285time, we have been swapping out Buildbot responsibilities with LUCI services. As
286such, most builds today on Buildbot are already running using LUCI services.
287
288LUCI tries to separate each CI concern into a separate service. Swarming, for
289example, is one such service in LUCI, and handles job distribution. One of the
290technical limitations of Buildbot is that each set of builders needed to be
291owned by a single "master" process. This master would be responsible for
292scheduling, distributing, collecting, archiving and logging builds. LUCI
293distributes the responsibility of this work into separate independent services,
294negating the need for a master. For ease of migration from Buildbot masters to
295LUCI builders, we have defined "groups" of builders that each correspond to a
296single Buildbot master, and we have kept the LUCI Builder names the same as they
297were in Buildbot.
298
299For more an overview of the services that make up LUCI, take a look at the [LUCI
300Overview
301presentation](https://docs.google.com/presentation/d/1dhUecmBf7IZ3moy_SflNT7yBYeiJbvj7m9kAxqeN9-A/preview?slide=id.g6571e2aaf_0_95).
302
303
304## Site Hierarchy
305
306On the highest level, LUCI is organized by **projects**. A project contains all
307the configuration necessary to do development on a given repo, for example,
308Chromium is one of these projects (corresponding to chromium/src.git). Each
309project contains **builders**, which describe how a given builder works (i.e.
310recipe to run, gn args to use, etc.). Each **builder** has **builds**, which
311contain build information, build properties details, success or failure status,
312blamelists, steps and links to log files.
313
314![Project layout diagram](images/LUCI-Site-Project.png)
315
316
317For the LUCI UI, to organize builders in each project, we introduce the idea of
318**groups**. Builders of each project are organized into **groups **of ordered
319builders (A single builder can be referenced by multiple groups). For example,
320"main" might contain all of the main builders, and "gpu" might contain all of
321the "gpu" builders but since groups can overlap, (so "main" can contain some
322subset of the "gpu" builders). Notably, groups don't own any project resources,
323they're simply a mechanism to group them for display purposes. Projects may have
324as many groups as they like, for whatever purpose they need them.
325
326A group of builders and their builds can be visualized in a couple ways; we call
327these **views**. We have currently implemented 2 views; a **console view** and a
328**builders view** for each group.
329
330![Project hierarchy diagram](images/LUCI-Project-Diagram.png)
331
332
333To get started with LUCI, go to [ci.chromium.org](http://ci.chromium.org). Drill
334down to build results from the list of projects. The search page is available to
335find a specific builder by name.
336
337![LUCI Home page site layout](images/LUCI-Home-Hierarchy.png "LUCI Home")
338
339
340## Known Issues
341
342A list of [known
343issues](https://bugs.chromium.org/p/chromium/issues/list?q=label%3Aluci-knownissues-ui)
344for the user interface of LUCI is available under Chromium bugs.
345
346Note: URLs and pages are subject to change. Our initial goal is to provide
347Buildbot user functionality parity, but we are committed to building additional
348enhanced user experiences on top of the new LUCI UI.
349
350## Help
351
352The Chrome Operations Foundation team is responsible for the design and
353development of LUCI. If you have any questions or need help on usage, feel free
354to reach out to the Chrome Operations team by emailing us at
355[[email protected]](mailto:[email protected])
356
357
358## Feedback
359
360LUCI UI is still in development. Our initial goal is to provide Buildbot
361functionality parity, but we are committed to building additional enhanced user
362experiences on top of the new LUCI UI once we no longer need to support
363Buildbot.
364
365If you have specific feedback you would like to share with us, we would love to
366hear it and incorporate it into our ongoing UI improvements.
367
368Use the **feedback button** on a LUCI page.
369
370For **feature requests or bugs**, please file a crbug using the following
371[template](https://bugs.chromium.org/p/chromium/issues/entry?labels=LUCI-M0-Backlog&summary=[LUCI-Feedback-UI]%20Enter%20an%20one-line%20summary&components=Infra>Platform>Milo&[email protected],[email protected],[email protected]&description=Please%20use%20this%20to%20template%20to%20file%20a%20feature%20request%20into%20LUCI%20backlog.%20%20%0A%0AReminder%20to%20include%20the%20following%3A%0A-%20Description%0A-%20Priority%0A-%20Why%20this%20feature%20is%20needed).
372
373To **share your feedback**, please fill out this [short
374survey](https://goo.gl/forms/YPO6XCQ3q47r00iw2).
375
376**Contact us** directly by emailing us at
377[[email protected]](mailto:[email protected]).
378