| Skia Gold |
| ========= |
| |
| Overview |
| -------- |
| |
| Gold is a web application that compares the images produced by our bots against |
| known baseline images. |
| Key features: |
| |
| * Baselines are managed in Gold outside of Git, but in lockstep with Git commits. |
| * Each commit creates >500k images. |
| * Deviations from the baseline are triaged after a CL lands and images are triaged |
| as either `positive` or `negative`. If a CL causes Skia to break it is reverted |
| or an additional CL is landed to fix the problem. |
| * We test across a range of dimensions, e.g.: |
| |
| - OS (Windows, Linux, Mac, Android, iOS) |
| - Architectures (Intel, ARM) |
| - Backends (CPU, OpenGL, Vulkan etc.) |
| - etc. |
| |
| * Written in Go, Polymer and deployed on the Google Cloud. The code |
| is in the [Skia Infra Repository](https://github.com/google/skia-buildbot). |
| |
| Recommended Workflows |
| --------------------- |
| ### How to best use Gold for commonly faced problems ### |
| |
| These instructions will refer to various views which are accessible via the left |
| navigation on [gold.skia.org](https://gold.skia.org/). |
| View access is public, triage access is granted to |
| Skia contributors. You must be logged in to triage. |
| |
| Problem #1: As sheriff, I need to triage and “assign” many incoming new images. |
| ------------------------------------------------------------------------------- |
| Solution today: |
| |
| * Access the By Blame view to see digests needing triage and associated |
| owners/CLs |
| + Only untriaged digests will be shown by default |
| + Blame is not sorted in any particular order |
| + Digests are clustered by runs and the most minimal set of blame |
| |
| <img src=BlameView.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| * Select digests for triage |
| + Digests will be listed in order with largest difference first |
| + Click to open the digest view with detailed information |
| |
| <img src=Digests.png style="margin-left:40px" align="left" width="780"/> <br clear="left"> |
| |
| * Open bugs for identified owner(s) |
| + The digest detail view has a link to open a bug from the UI |
| + Via the Gold UI or when manually entering a bug, copy the full URL of |
| single digest into a bug report |
| + The URL reference to the digest in Issue Tracker will link the bug to |
| the digest in Gold |
| |
| <img src="IssueHighlight.png" style="margin-left:60px" align="left" width="720" border=1/> <br clear="left"> |
| |
| <br> |
| |
| Future improvements: |
| |
| * Smarter, more granular blamelist |
| |
| <br> |
| |
| Problem #2: As a developer, I need to land a CL that may change many images. |
| ---------------------------------------------------------------------------- |
| To find your results: |
| |
| * Immediately following commit, access the By Blame view to find untriaged |
| digest groupings associated with your ID |
| * Click on one of the clusters including your CL to triage |
| * Return to the By Blame view to walk through all untriaged digests involving |
| your change |
| * Note: It is not yet implemented in the UI but possible to filter the view |
| by CL. Delete hashes in the URL to only include the hash for your CL. |
| |
| <img src=BlameView.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| To rebaseline images: |
| |
| * Access the Ignores view and create a new, short-interval (hours) ignore for |
| the most affected configuration(s) |
| |
| <img src=Ignores.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| |
| * Click on the Ignore to bring up a search view filtered by the affected |
| configuration(s) |
| * Mark untriaged images as positive (or negative if appropriate) |
| * Follow one of two options for handling former positives: |
| + Leave former positives as-is and let them fall off with time if there is |
| low risk of recurrence |
| + Mark former positives as negative if needed to verify the change moving |
| forward |
| |
| Future improvements: |
| |
| * Trybot support prior to commit, with view limited to your CL |
| * Pre-triage prior to commit that will persist when the CL lands |
| |
| <br> |
| |
| Problem #3: As a developer or infrastructure engineer, I need to add a new or updated config. |
| --------------------------------------------------------------------------------------------- |
| (ie: new bot, test mode, environment change) |
| |
| Solution today: |
| |
| * Follow the process for rebaselining images: |
| + Wait for the bot/test/config to be committed and show up in the Gold UI |
| + Access the Ignores view and create a short-interval ignore for the |
| configuration(s) |
| + Triage the ignores for that config to identify positive images |
| + Delete the ignore |
| |
| Future improvements: |
| |
| * Introduction of a new or updated test can make use of try jobs and pre-triage. |
| * New configs may be able to use these features as well. |
| |
| <br> |
| |
| Problem #4: As a developer, I need to analyze the details of a particular image digest. |
| --------------------------------------------------------------------------------------- |
| Solution: |
| |
| * Access the By Test view |
| |
| <img src=ByTest.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| * Click the magnifier to filter by configuration |
| * Access the Cluster view to see the distribution of digest results |
| + Use control-click to select and do a direct compare between data points |
| + Click on configurations under “parameters” to highlight data points and |
| compare |
| |
| <img src=ClusterConfig.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| * Access the Grid view to see NxN diffs |
| |
| <img src=Grid.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| * Access the Dot diagram to see history of commits for the trace |
| + Each dot represents a commit |
| + Each line represents a configuration |
| + Dot colors distinguish between digests |
| |
| <img src=DotDiagram.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |
| |
| <br> |
| |
| Future improvements: |
| |
| * Large diff display of image vs image |
| |
| <br> |
| |
| Problem #5: As a developer, I need to find results for a particular configuration. |
| ---------------------------------------------------------------------------------- |
| Solution: |
| |
| * Access the Search view |
| * Select any parameters desired to search across tests |
| |
| <img src=Search.png style="margin-left:30px" align="left" width="800"/> <br clear="left"> |