Bug 1318200 - TaskCluster CI for Stylo; r?dustin draft
authorGregory Szorc <gps@mozilla.com>
Thu, 17 Nov 2016 09:52:39 -0800
changeset 440725 8ce4c7acab4d41094574879c39a5c147270b4fc4
parent 440724 be66b689d82c41d348173143ca665995b91b17c5
child 440726 36fd26a7c3ad4ca143549ffe0377637046060bb8
push id36308
push userbmo:gps@mozilla.com
push dateFri, 18 Nov 2016 02:00:18 +0000
reviewersdustin
bugs1318200
milestone53.0a1
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
taskcluster/ci/build/linux.yml
taskcluster/ci/desktop-test/test-platforms.yml
taskcluster/ci/desktop-test/test-sets.yml
taskcluster/ci/desktop-test/tests.yml
taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
taskcluster/taskgraph/try_option_syntax.py
--- 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'),
 }