Commit graph

292 commits

Author SHA1 Message Date
Simon Sapin
3a8bb531a0 Fetch repository from artifacts rather than GitHub 2019-11-22 18:14:26 +01:00
Simon Sapin
55a8158d17 Decision taks: add artifacts of the repository’s contents 2019-11-22 16:09:03 +01:00
Simon Sapin
a11dc7006f Add Windows support to with_curl_artifact_script 2019-11-22 16:09:03 +01:00
Simon Sapin
b96a36c131 Move mkdir call out of with_curl_script 2019-11-22 16:09:02 +01:00
Simon Sapin
83921dbc99 Deduplicate task dependencies 2019-11-22 16:09:02 +01:00
Simon Sapin
203a06ff24 Fix Brewfile’s for running Servo without bulding it 2019-11-22 16:09:02 +01:00
Simon Sapin
34287e5342 Move WPT Linux from Buildbot to Taskcluster
Update expectations as differences don’t look intermittent:
https://github.com/servo/servo/pull/24785#issuecomment-555602259

Fixes https://github.com/servo/servo/issues/23569
2019-11-19 18:37:29 +01:00
Simon Sapin
81a03c1a18 Tweak WPT task names and config 2019-11-19 17:46:10 +01:00
Simon Sapin
b38fd6b21f Fix run.dockerfile to actually be able to run current Servo
… and avoid runtime errors about missing gstreamer plugins
2019-11-19 17:38:47 +01:00
Simon Sapin
67b0b97d4f Zero-pad the chunk number in WPT task names 2019-11-18 11:21:38 +01:00
Simon Sapin
e5f6333832 Only use high prority for macOS when testing a PR for merging. 2019-11-18 11:05:49 +01:00
Simon Sapin
1762cba533 Don’t pretend that update_wpt() doesn’t use debug assertions
It already was, since the key given to `find_or_create()`
did not include `args`.
2019-11-18 11:05:49 +01:00
Simon Sapin
fe23add637 Raise the priority of the release build task for WPT on macOS
… since other time-sensitive tasks depend on them.

Note: we need to be careful with task priorities,
especially in worker pools with limited capacity,
since they are absolute and can cause starvation:

https://docs.taskcluster.net/docs/manual/tasks/priority
2019-11-18 11:05:49 +01:00
Simon Sapin
b19b821985 Split WPT macOS testing into many more chunks
## Before this

Before this PR, we had roughly as many chunks as available workers.
Because the the number of test files is a poor estimate for the time
needed to run them, we have significant variation in the completion time
between chunks when testing one given PR.

https://github.com/servo/taskcluster-config/pull/9 adds a tool to collect
this data. Here are two full runs of `test_wpt` before this PR:

https://community-tc.services.mozilla.com/tasks/groups/DBt9ki9gTdWmwAk-VDorzw

```
count 1, total 0:00:32, max: 0:00:32	docker	0:00:32
count 1, total 0:59:14, max: 0:59:14	macos-disabled-mac1	0:59:14
count 6, total 4:12:16, max: 1:01:14	macos-disabled-mac1 WPT	0:40:29 0:18:55 0:46:50 0:44:38 1:01:14 0:40:10
count 1, total 0:55:19, max: 0:55:19	macos-disabled-mac9	0:55:19
count 6, total 4:25:09, max: 1:01:40	macos-disabled-mac9 WPT	0:37:58 0:37:24 0:27:18 1:01:40 0:46:17 0:54:31
```

Times for a given chunk vary between 19 minutes and 61 minutes.
Assuming no `try` testing, with Homu’s serial scheduling of `r+` testing
this means that that worker sits idle for 42 minutes
and our limited CPU resources are under-utilized.

When there *are* `try` PRs being tested however, they compete with
each other and any `r+` PR for the same workers. If we get unlucky,
a 61 minute task could only *start* after some other tasks have finished,
Increasing the overall time-to-merge a lot.

## This

This PR changes the number of chunks to be significantly more
than the number of available workers. When one of them finishes,
that worker can pick up another one instead of sitting idle.

Now the ratio of number of tasks to number of workers doesn’t matter:
the differences in run time between tasks becomes somewhat of an advantage
and the distribution to workers evens out on average.

The number 30 is a bit arbitrary. A higher number reduces resource
under-utilization, but increases the effect of per-task overhead.
The git cache added in https://github.com/servo/servo/pull/24753
reduced that overhead, though.

Another worry I had was whether this would make worse the similar problem
of unequal scheduling between processes within a task,
where some CPU cores sit idle while the rest processes finish their
assigned work.

This turned out not to be enough of a problem to negatively affect
the total machine time:

https://community-tc.services.mozilla.com/tasks/groups/VnDac92HQU6QmrpzWPCR2w
```
count 1, total 0:00:48, max: 0:00:48	docker	0:00:48
count 1, total 0:39:04, max: 0:39:04	macos-disabled-mac9	0:39:04
count 31, total 4:03:29, max: 0:15:29	macos-disabled-mac9 WPT
	0:07:26 0:08:39 0:04:21 0:07:13 0:12:47 0:10:11 0:04:01 0:03:36
	0:10:43 0:12:57 0:04:47 0:04:06 0:10:09 0:12:00 0:12:42 0:04:40
	0:04:24 0:12:20 0:12:15 0:03:03 0:07:35 0:11:35 0:07:01 0:04:16
	0:09:40 0:05:08 0:05:01 0:06:29 0:15:29 0:02:28 0:06:27
```

(4h03min is even lower than above, but seems within variation.)

## After this

https://github.com/servo/servo/issues/23655 proposes automatically
restarting failed WPT tasks, in case the failure is intermittent.
With the test suite split into more chunks we have fewer tests per chunk,
and therefore lower probability that a given one fails.
Restarting one of them also causes less repeated work.
2019-11-18 11:04:58 +01:00
Simon Sapin
1ca9c5b96b Move "extra" WPT testing to its own task (chunk "zero") 2019-11-18 09:47:05 +01:00
bors-servo
dfa78986a6
Auto merge of #24753 - servo:mainstream-brew, r=jdm
Use an already-installed Homebrew at /usr/local

This requires https://github.com/servo/taskcluster-config/pull/4 to be deployed.

Having the standard location helps `pkg-config` (CC https://github.com/servo/servo/pull/24688), and allows installing pre-compiled pakcages (which is much faster than compiling from source).
2019-11-17 17:49:14 -05:00
Simon Sapin
0dad48f54f macOS CI: use a cache of github.com/servo/servo
Relies on https://github.com/servo/taskcluster-config/pull/6
2019-11-17 09:08:21 +01:00
Simon Sapin
657fead0ce Don’t fetch git tags 2019-11-16 14:26:37 +01:00
Simon Sapin
188dd9e7ab Reduce git fetch depth. 100 still takes quite some time!
```
(git init servo.git &&
    cd servo.git &&
    time git fetch https://github.com/servo/servo master $ARGS &&
); rm -rf servo.git

Full: 724.75 MiB
      57s home fiber in Paris
    1m25s AWS us-west-2 Oregon
    3m23s Macstadium DC1 Atlanta
    4m22s Macstadium DC2 Las Vegas

--depth 100: 129.00 MiB
    1m21s home
    1m18s AWS
    1m30s Macstadium 1
    1m24s Macstadium 2

--depth 50: 97.62 MiB
    30s home
    30s AWS
    41s Macstadium 1
    40s Macstadium 2

--depth 30: 92.47 MiB
    17s home
    18s AWS
    27s Macstadium 1
    26s Macstadium 2

--depth 10: 88.25 MiB
    11s home
    12s AWS
    26s Macstadium 1
    25s Macstadium 2

--depth 1: 87.53 MiB
    10s home
    10s AWS
    22s Macstadium 1
    28s Macstadium 2
```
2019-11-16 14:15:52 +01:00
Simon Sapin
a74046a3b6 Print timing of git operations 2019-11-16 14:15:15 +01:00
Simon Sapin
50d5bac736 Reduce macOS build task timeout 2019-11-16 10:11:36 +01:00
Simon Sapin
8b39fd3c7b Verbose Homebrew 2019-11-16 10:10:13 +01:00
Simon Sapin
d04a2745c6 Make the macOS worker type configurable 2019-11-15 22:21:06 +01:00
Simon Sapin
9b17deb11e Install zlib on macOS
https://community-tc.services.mozilla.com/tasks/fcbLrz33RHeshgRZGvSAjg/runs/0/logs/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FfcbLrz33RHeshgRZGvSAjg%2Fruns%2F0%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L1359

Note that the above is on macOS 10.15. Maybe previous versions provided zlib system-wide?
2019-11-15 22:20:47 +01:00
Simon Sapin
c292b1aaf0 Expect Homebrew to already be installed and in $PATH 2019-11-15 22:20:40 +01:00
bors-servo
b9cdf9ebda
Auto merge of #24728 - servo:tc-readme, r=jdm
Update etc/taskcluster/README.md for Community-TC migration
2019-11-15 09:03:29 -05:00
Simon Sapin
efdf31704c Add link to worker list view 2019-11-14 16:09:30 +01:00
bors-servo
36c2a131ac
Auto merge of #24717 - servo:fraaaaaaaaaaaaame, r=jdm
Fix sccache failure when rustc generates thousands of warnings

Fixes https://github.com/servo/servo/issues/24714
2019-11-14 07:47:12 -05:00
Simon Sapin
2d8ebc57dd Update etc/taskcluster/README.md for Community-TC migration 2019-11-13 20:24:42 +01:00
bors-servo
396df40218
Auto merge of #24712 - servo:lz4, r=jdm
Revert "Upload uncompressed Docker images"

https://bugzilla.mozilla.org/show_bug.cgi?id=1593543 is fixed.

This reverts commit 5abb013dfd.
2019-11-12 21:57:04 -05:00
Simon Sapin
00151b6a6f Fix sccache failure when rustc generates hundreds of thousands of warnings
Fixes https://github.com/servo/servo/issues/24714
2019-11-12 17:46:21 +01:00
Simon Sapin
56dd10c2ee Revert "Upload uncompressed Docker images"
https://bugzilla.mozilla.org/show_bug.cgi?id=1593543 is fixed.

This reverts commit 5abb013dfd.
2019-11-12 14:18:52 +01:00
Simon Sapin
c8fd64f5ce Remove unused Packet.net configuration 2019-11-08 16:26:13 +01:00
Simon Sapin
a5ea470d57 Move part of the Taskcluster configuration
… to https://github.com/servo/taskcluster-config
2019-11-08 16:25:14 +01:00
Simon Sapin
b3faeb5483 Remove support for taskcluster.net in the decision task 2019-11-08 16:20:50 +01:00
bors-servo
8cb6145311
Auto merge of #24689 - servo:FLIP-THE-SWITCH, r=jdm
Move all tasks to Community-TC
2019-11-08 05:02:33 -05:00
Simon Sapin
9d85cbb65c Move all tasks to Community-TC 2019-11-08 07:24:33 +01:00
Josh Matthews
540b28e44f Add missing import to docs upload script. 2019-11-07 19:55:00 +01:00
Simon Sapin
cb693b3228 Split doc generation into its own task
This task reached its 60 minutes timeout in
https://community-tc.services.mozilla.com/tasks/YByC2V7uQq2lQv40TVi5KQ/runs/1/logs/live/https%3A%2F%2Fcommunity-tc.services.mozilla.com%2Fapi%2Fqueue%2Fv1%2Ftask%2FYByC2V7uQq2lQv40TVi5KQ%2Fruns%2F1%2Fartifacts%2Fpublic%2Flogs%2Flive.log#L6276
2019-11-07 17:05:56 +01:00
Simon Sapin
5d62f8084e Run non-macOS tasks on Community-TC for push events 2019-11-07 11:04:01 +01:00
Simon Sapin
b3ca13cc65 Add a decision task for try-windows-ami 2019-11-07 10:38:29 +01:00
Simon Sapin
6125fe88c3 Run a decision task on both deployments for push events 2019-11-06 00:43:24 +01:00
Simon Sapin
694e38e163 Update the decision task’s Docker image
47b7864da...5a2588ef1
2019-11-05 14:25:33 +01:00
Simon Sapin
7cf489c1f8 Don’t fail tasks if a branch was fast-forward-pushed since the triggering push event 2019-11-05 14:25:33 +01:00
Simon Sapin
08705345d6 Always construct TC API URLs from $TASKCLUSTER_PROXY_URL or $TASKCLUSTER_ROOT_URL 2019-11-05 14:25:33 +01:00
bors-servo
2aca5c82e4
Auto merge of #24652 - servo:nitouryuu, r=nox
Don’t run tasks on new TC for GitHub push events (for now)
2019-11-05 01:54:24 -05:00
Simon Sapin
d8b630779d Support both Taskcluster deployments
Part of https://bugzilla.mozilla.org/show_bug.cgi?id=1574648
2019-11-04 17:39:17 +01:00
Simon Sapin
5abb013dfd Upload uncompressed Docker images
Work aronud https://bugzilla.mozilla.org/show_bug.cgi?id=1593543
2019-11-04 17:39:17 +01:00
bors-servo
7f77cb0bde
Auto merge of #24603 - servo:jdm-patch-36, r=SimonSapin
Install rustc-dev for nightly rust toolchain

Fixes #24579.
2019-11-03 06:38:28 -05:00
Patrick Walton
a358bca766 Use surfman for managing GL surfaces
Co-authored-by: Alan Jeffrey <ajeffrey@mozilla.com>
Co-authored-by: Zakor Gyula <gyula.zakor@h-lab.eu>
Co-authored-by: Josh Matthews <josh@joshmatthews.net>
2019-11-01 08:47:11 -05:00