• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1Skia Gold
2=========
3
4Overview
5--------
6
7Gold is a web application that compares the images produced by our bots against
8known baseline images.
9Key features:
10
11* Baselines are managed in Gold outside of Git, but in lockstep with Git commits.
12* Each commit creates >500k images.
13* Deviations from the baseline are triaged after a CL lands and images are
14  triaged as either `positive` or `negative`.  'Positive' means the diff is
15  considered acceptable.  'Negative' means the diff is considered unacceptable
16  and requires a fix.
17  If a CL causes Skia to break it is reverted or an additional CL is landed to
18  fix the problem.
19* We test across a range of dimensions, e.g.:
20
21  - OS (Windows, Linux, Mac, Android, iOS)
22  - Architectures (Intel, ARM)
23  - Backends (CPU, OpenGL, Vulkan etc.)
24  - etc.
25
26* Written in Go, Polymer and deployed on the Google Cloud.  The code
27  is in the [Skia Infra Repository](https://github.com/google/skia-buildbot).
28
29Recommended Workflows
30---------------------
31### How to best use Gold for commonly faced problems ###
32
33These instructions will refer to various views which are accessible via the left
34navigation on [gold.skia.org](https://gold.skia.org/).
35View access is public, triage access is granted to
36Skia contributors.  You must be logged in to triage.
37
38Problem #1: As sheriff, I need to triage and “assign” many incoming new images.
39-------------------------------------------------------------------------------
40Solution today:
41
42*   Access the By Blame view to see digests needing triage and associated
43    owners/CLs
44    +   Only untriaged digests will be shown by default
45    +   Blame is not sorted in any particular order
46    +   Digests are clustered by runs and the most minimal set of blame
47
48<img src=BlameView.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
49
50*   Select digests for triage
51    +   Digests will be listed in order with largest difference first
52    +   Click to open the digest view with detailed information
53
54<img src=Digests.png style="margin-left:40px" align="left" width="780"/> <br clear="left">
55
56*   Open bugs for identified owner(s)
57    +   The digest detail view has a link to open a bug from the UI
58    +   Via the Gold UI or when manually entering a bug, copy the full URL of
59        single digest into a bug report
60    +   The URL reference to the digest in Issue Tracker will link the bug to
61        the digest in Gold
62
63<img src="IssueHighlight.png" style="margin-left:60px" align="left" width="720" border=1/> <br clear="left">
64
65<br>
66
67Future improvements:
68
69*   Smarter, more granular blamelist
70
71<br>
72
73Problem #2: As a developer, I need to land a CL that may change many images.
74----------------------------------------------------------------------------
75To find your results:
76
77*   Immediately following commit, access the By Blame view to find untriaged
78    digest groupings associated with your ID
79*   Click on one of the clusters including your CL to triage
80*   Return to the By Blame view to walk through all untriaged digests involving
81    your change
82*   Note:  It is not yet implemented in the UI but possible to filter the view
83    by CL.  Delete hashes in the URL to only include the hash for your CL.
84
85<img src=BlameView.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
86
87To rebaseline images:
88
89*   Access the Ignores view and create a new, short-interval (hours) ignore for
90    the most affected configuration(s)
91
92<img src=Ignores.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
93
94
95*   Click on the Ignore to bring up a search view filtered by the affected
96    configuration(s)
97*   Mark untriaged images as positive (or negative if appropriate)
98*   Follow one of two options for handling former positives:
99    +   Leave former positives as-is and let them fall off with time if there is
100        low risk of recurrence
101    +   Mark former positives as negative if needed to verify the change moving
102        forward
103
104Future improvements:
105
106*   Trybot support prior to commit, with view limited to your CL
107*   Pre-triage prior to commit that will persist when the CL lands
108
109<br>
110
111Problem #3: As a developer or infrastructure engineer, I need to add a new or updated config.
112---------------------------------------------------------------------------------------------
113(ie: new bot, test mode, environment change)
114
115Solution today:
116
117*   Follow the process for rebaselining images:
118    +   Wait for the bot/test/config to be committed and show up in the Gold UI
119    +   Access the Ignores view and create a short-interval ignore for the
120        configuration(s)
121    +   Triage the ignores for that config to identify positive images
122    +   Delete the ignore
123
124Future improvements:
125
126*   Introduction of a new or updated test can make use of try jobs and pre-triage.
127*   New configs may be able to use these features as well.
128
129<br>
130
131Problem #4: As a developer, I need to analyze the details of a particular image digest.
132---------------------------------------------------------------------------------------
133Solution:
134
135*   Access the By Test view
136
137<img src=ByTest.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
138
139*   Click the magnifier to filter by configuration
140*   Access the Cluster view to see the distribution of digest results
141    +   Use control-click to select and do a direct compare between data points
142    +   Click on configurations under “parameters” to highlight data points and
143        compare
144
145<img src=ClusterConfig.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
146
147*   Access the Grid view to see NxN diffs
148
149<img src=Grid.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
150
151*   Access the Dot diagram to see history of commits for the trace
152    +   Each dot represents a commit
153    +   Each line represents a configuration
154    +   Dot colors distinguish between digests
155
156<img src=DotDiagram.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
157
158<br>
159
160Future improvements:
161
162*   Large diff display of image vs image
163
164<br>
165
166Problem #5: As a developer, I need to find results for a particular configuration.
167----------------------------------------------------------------------------------
168Solution:
169
170*   Access the Search view
171*   Select any parameters desired to search across tests
172
173<img src=Search.png style="margin-left:30px" align="left" width="800"/> <br clear="left">
174