Bug 1318200 - TaskCluster CI for Stylo; r?dustin
This commit introduces support for performing build and test variations
with Stylo enabled.
From a high level, this is similar to the e10s/non-e10s variations that
we currently run. However, it is different in that Stylo is a build
time (not run time) flag. So, we need to perform separate builds for
Stylo.
In the current implementation of the task graph, we can either
introduce a new platform or a new build type/configuration. I've
chosen to introduce a new platform if nothing else so the Treeherder
results clearly separate Stylo from non-Stylo. This decision can be
revisited in the future once Stylo becomes more stable and visible
outside the "stylo" repository.
Stylo functionality is limited to layout functionality and Stylo
developers aren't very interested in many tests not related to layout
at the moment. So we introduce a new test set running a limited
functionality of tests in Stylo builds.
In the current state of this commit, Stylo builds will permafail.
This is because Stylo builds require a vendored copy of Servo. Logic
for pruning the task graph of Stylo/Servo related tasks will be
implemented in subsequent commits.
MozReview-Commit-ID: JivhkpXDjIw
--- a/taskcluster/ci/build/linux.yml
+++ b/taskcluster/ci/build/linux.yml
@@ -197,16 +197,64 @@ linux64-asan/debug:
- builds/releng_base_linux_64_builds.py
- balrog/production.py
script: "mozharness/scripts/fx_desktop_build.py"
secrets: true
custom-build-variant-cfg: asan-tc-and-debug
tooltool-downloads: public
need-xvfb: true
+linux64-stylo/opt:
+ description: "Linux64 Opt Stylo"
+ index:
+ product: firefox
+ job-name: linux64-stylo-opt
+ treeherder:
+ platform: linux64-stylo/opt
+ symbol: tc(B)
+ tier: 2
+ worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+ worker:
+ implementation: docker-worker
+ max-run-time: 3600
+ run:
+ using: mozharness
+ actions: [get-secrets build check-test generate-build-stats update]
+ config:
+ - builds/releng_base_linux_64_builds.py
+ - balrog/production.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: stylo
+ tooltool-downloads: public
+
+linux64-stylo/debug:
+ description: "Linux64 Debug Stylo"
+ index:
+ product: firefox
+ job-name: linux64-stylo-debug
+ treeherder:
+ platform: linux64-stylo/debug
+ symbol: tc(B)
+ tier: 2
+ worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+ worker:
+ implementation: docker-worker
+ max-run-time: 3600
+ run:
+ using: mozharness
+ actions: [get-secrets build check-test generate-build-stats update]
+ config:
+ - builds/releng_base_linux_64_builds.py
+ - balrog/production.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: stylo-debug
+ tooltool-downloads: public
+
linux64-jsdcov/opt:
description: "Linux64-JSDCov Opt"
index:
product: firefox
job-name: linux64-jsdcov-opt
treeherder:
platform: linux64/jsdcov
symbol: tc(B)
--- a/taskcluster/ci/desktop-test/test-platforms.yml
+++ b/taskcluster/ci/desktop-test/test-platforms.yml
@@ -21,16 +21,25 @@ linux64/opt:
# TODO: use 'pgo' and 'asan' labels here, instead of -pgo/opt
linux64-pgo/opt:
build-platform: linux64-pgo/opt
test-set: all-tests
linux64-asan/opt:
build-platform: linux64-asan/opt
test-set: asan-tests
+# Stylo builds only run a subset of tests for the moment. So give them
+# their own test set.
+linux64-stylo/debug:
+ build-platform: linux64-stylo/debug
+ test-set: stylo-tests
+linux64-stylo/opt:
+ build-platform: linux64-stylo/opt
+ test-set: stylo-tests
+
linux64-ccov/opt:
build-platform: linux64-ccov/opt
test-set: ccov-code-coverage-tests
linux64-jsdcov/opt:
build-platform: linux64-jsdcov/opt
test-set: jsdcov-code-coverage-tests
# win32 vm
--- a/taskcluster/ci/desktop-test/test-sets.yml
+++ b/taskcluster/ci/desktop-test/test-sets.yml
@@ -31,16 +31,21 @@ all-tests:
- mochitest-webgl
- reftest
- reftest-no-accel
- web-platform-tests
- web-platform-tests-reftests
- web-platform-tests-wdspec
- xpcshell
+stylo-tests:
+ - cppunit
+ - crashtest
+ - reftest-stylo
+
asan-tests:
- cppunit
- crashtest
- firefox-ui-functional-local
- firefox-ui-functional-remote
- gtest
- jittest
- jsreftest
--- a/taskcluster/ci/desktop-test/tests.yml
+++ b/taskcluster/ci/desktop-test/tests.yml
@@ -588,16 +588,32 @@ reftest-no-accel:
- remove_executables.py
- unittests/mac_unittest.py
default:
- unittests/linux_unittest.py
- remove_executables.py
extra-options:
- --reftest-suite=reftest-no-accel
+reftest-stylo:
+ description: "Reftest run for Stylo"
+ suite: reftest/reftest-stylo
+ treeherder-symbol: tc-R(Rs)
+ chunks: 16
+ mozharness:
+ script: desktop_unittest.py
+ no-read-buildbot-config: true
+ config:
+ by-test-platform:
+ default:
+ - unittests/linux_unittest.py
+ - remove_executables.py
+ extra-options:
+ - --reftest-suite=reftest-stylo
+
web-platform-tests:
description: "Web platform test run"
suite: web-platform-tests
treeherder-symbol: tc-W()
chunks:
by-test-platform:
macosx.*: 5
default: 12
--- a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
+++ b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
@@ -33,16 +33,18 @@ JOB_NAME_WHITELIST = set([
'linux64-asan-opt',
'linux64-ccov-opt',
'linux64-debug',
'linux64-jsdcov-opt',
'linux64-l10n-opt',
'linux64-opt',
'linux64-pgo',
'linux64-st-an-opt',
+ 'linux64-stylo-debug',
+ 'linux64-stylo-opt',
'linux64-valgrind-opt',
'linux-debug',
'linux-opt',
'linux-pgo',
'macosx64-debug',
'macosx64-opt',
'macosx64-st-an-opt',
'nexus-5-l-eng-debug',
--- a/taskcluster/taskgraph/try_option_syntax.py
+++ b/taskcluster/taskgraph/try_option_syntax.py
@@ -103,16 +103,17 @@ UNITTEST_ALIASES = {
'mochitest-jetpack': alias_prefix('mochitest-jetpack'),
'mochitest-media': alias_prefix('mochitest-media'),
'mochitest-media-e10s': alias_prefix('mochitest-media-e10s'),
'mochitest-vg': alias_prefix('mochitest-valgrind'),
'reftest': alias_matches(r'^(plain-)?reftest.*$'),
'reftest-no-accel': alias_matches(r'^(plain-)?reftest-no-accel.*$'),
'reftests': alias_matches(r'^(plain-)?reftest.*$'),
'reftests-e10s': alias_matches(r'^(plain-)?reftest-e10s.*$'),
+ 'reftest-stylo': alias_matches(r'^(plain-)?reftest-stylo.*$'),
'robocop': alias_prefix('robocop'),
'web-platform-test': alias_prefix('web-platform-tests'),
'web-platform-tests': alias_prefix('web-platform-tests'),
'web-platform-tests-e10s': alias_prefix('web-platform-tests-e10s'),
'web-platform-tests-reftests': alias_prefix('web-platform-tests-reftests'),
'web-platform-tests-reftests-e10s': alias_prefix('web-platform-tests-reftests-e10s'),
'xpcshell': alias_prefix('xpcshell'),
}