The WebKit Sheriff calendar is available here. Now that we are completely unforked, we have switched from the vendor branch model to the integration model -- we are pulling WebKit directly from upstream and rolling DEPS when the revision is good. The interesting question, of course is what makes a revision good? In our case, we'll let the canary bot determine that The canary server always pulls from the tip of trunk WebKit and is a great early warning system for a possible breakage happening upstream. In essence, it's a try bot for changes upstream. ResponsibilitiesAs a WebKit sheriff, your responsibility is to watch the canary server and do one of the following:
Rolling DEPS is just a matter of committing a change to webkit_revision variable in src/DEPS file to that of the most recent green canary build: vars = {Naturally, you don't have to do this for every build -- a couple of times a day should be sufficient. In some cases, your teammates may request extra rolls to grab their changes. It is rare but possible that a green canary build wreaks havoc in the Chromium build due to unit or UI test failures. You should anticipate that and be ready to roll revision back to its previous value if something like that happens. In case of the canary bot bustage, it is your responsibility to:
The bustage doesn't always result in a compile failure. Sometimes it manifests through layout test regressions. To fix, WebKit bustages require changes that generally fall somewhere in these 4 categories:
The first category is very easy to fix -- just make these changes locally and submit with your DEPS roll. Be sure to first land a DEPS roll right up to the breakage to minimize effects of other changes for your fix commit. Changes to our code in the WebKit tree are usually a consequence of WebKit engineers not seeing our port on the WebKit build bot and should be treated as upstream build bustage. In other words, you can commit fixes to WebKit tree without a review. Just make sure to replace Reviewed by ... with Not Reviewed, build fix. in the ChangeLog. Once the canary bot picks up your commit, it should feel happier. Changes to common WebKit code are trickier. Please hunt down the author of the breaking change on #webkit or bugs.webkit.org and work with him/her to come up with an improved version of the change -- the one that doesn't break the Chromium port. Ask the reviewer of the original change to review the fix. Hope it goes fast. Landing Two-sided Patches Sometimes the patch spans both WebKit and Chromium trees, which makes it somewhat tricky to land. Here's a set of steps that should help:
Layout Tests Often, new layout tests are added to WebKit or existing tests are rebaselined. When this happens, you will need to submit new baselines for these tests. Build the test_shell locally and run layout tests with the --new-baseline option. Make sure to add newly created files to your DEPS roll. For other platforms, also add these tests to test_expectations.txt (don't forget to lint!), comment accordingly and create a "to-be-rebaselined" bug.
It is very important to be careful in distinguishing between a layout test regression and a test, needing rebaseline -- we don't want to sneak regressions in under the guise of rebaselining. Err on the side of caution. Rebaselining layout tests using the rebaselining tool You could use the rebaselining tool to produce new baselines for all platforms. The tool pull baselines from archive results on Chromium buildbot (by default) or webkit.org canary (running the tool with option --webkit_canary). Click here to see details on how to use the tool. Running layout tests on the trybots Layout tests are supported on special trybots. To run them, use the following format: gcl try foo --bot layout_win,layout_mac,layout_linux Performance Regressions The canary bots include two performance testers. One on Linux and one on Windows. The Canary Dashboard shows the results. To view changes between merge revisions, go to: http://trac.webkit.org/changeset?new=NEWREVISIONHERE@trunk&old=OLDREVISIONHERE@trunk The sheriffing duty will continue in this form until we have a working builder up on the build.webkit.org. After that, we will regroup and come up with a new set of guidelines. |