diff options
-rw-r--r-- | .taskcluster.yml | 1 | ||||
-rw-r--r-- | etc/taskcluster/decision_task.py | 65 | ||||
-rw-r--r-- | etc/taskcluster/decisionlib.py | 3 |
3 files changed, 38 insertions, 31 deletions
diff --git a/.taskcluster.yml b/.taskcluster.yml index 0b427e1795d..d7b380ae766 100644 --- a/.taskcluster.yml +++ b/.taskcluster.yml @@ -14,6 +14,7 @@ tasks: else: proj-servo created: {$fromNow: ''} deadline: {$fromNow: '1 day'} + priority: high extra: treeherder: machine: {platform: Linux} diff --git a/etc/taskcluster/decision_task.py b/etc/taskcluster/decision_task.py index 4adedd4505d..99b2bc585f6 100644 --- a/etc/taskcluster/decision_task.py +++ b/etc/taskcluster/decision_task.py @@ -579,7 +579,7 @@ def macos_nightly(): def update_wpt(): - build_task = macos_release_build() + build_task = macos_release_build_with_debug_assertions() update_task = ( macos_task("WPT update") .with_python2() @@ -608,12 +608,13 @@ def update_wpt(): ) -def macos_release_build(args=""): +def macos_release_build_with_debug_assertions(priority=None): return ( macos_build_task("Release build") .with_treeherder("macOS x64", "Release") + .with_priority(priority) .with_script("\n".join([ - "./mach build --release --verbose " + args, + "./mach build --release --verbose --with-debug-assertions", "./etc/ci/lockfile_changed.sh", "tar -czf target.tar.gz" + " target/release/servo" + @@ -622,12 +623,13 @@ def macos_release_build(args=""): " target/release/build/osmesa-src-*/out/src/mapi/shared-glapi/.libs", ])) .with_artifacts("repo/target.tar.gz") - .find_or_create("build.macos_x64_release." + CONFIG.task_id()) + .find_or_create("build.macos_x64_release_w_assertions." + CONFIG.task_id()) ) def macos_wpt(): - build_task = macos_release_build("--with-debug-assertions") + priority = "high" if CONFIG.git_ref == "refs/heads/auto" else None + build_task = macos_release_build_with_debug_assertions(priority=priority) def macos_run_task(name): task = macos_task(name).with_python2() return with_homebrew(task, ["etc/taskcluster/macos/Brewfile-gstreamer"]) @@ -637,7 +639,7 @@ def macos_wpt(): build_task, repo_dir="repo", repo_kwargs=dict(alternate_object_dir="/var/cache/servo.git/objects"), - total_chunks=6, + total_chunks=30, processes=4, ) @@ -645,10 +647,12 @@ def macos_wpt(): def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes, repo_dir, chunks="all", repo_kwargs={}): if chunks == "all": - chunks = [n + 1 for n in range(total_chunks)] + chunks = range(total_chunks + 1) for this_chunk in chunks: task = ( - make_chunk_task("WPT chunk %s / %s" % (this_chunk, total_chunks)) + make_chunk_task("WPT chunk {:0{width}} / {}".format( + this_chunk, total_chunks, width=len(str(total_chunks)), + )) .with_treeherder(platform, "WPT-%s" % this_chunk) .with_repo(**repo_kwargs) .with_curl_artifact_script(build_task, "target.tar.gz") @@ -662,9 +666,10 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes, GST_DEBUG="3", ) ) - if this_chunk == chunks[-1]: - task.name += " + extra" - task.extra["treeherder"]["symbol"] += "+" + # `test-wpt` is piped into `cat` so that stdout is not a TTY + # and wptrunner does not use "interactive mode" formatting: + # https://github.com/servo/servo/issues/22438 + if this_chunk == 0: task.with_script(""" ./mach test-wpt-failure time ./mach test-wpt --release --binary-arg=--multiprocess \ @@ -697,26 +702,24 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes, --tracker-api default \ --reporter-api default """) - # `test-wpt` is piped into `cat` so that stdout is not a TTY - # and wptrunner does not use "interactive mode" formatting: - # https://github.com/servo/servo/issues/22438 - task.with_script(""" - ./mach test-wpt \ - --release \ - --processes $PROCESSES \ - --total-chunks "$TOTAL_CHUNKS" \ - --this-chunk "$THIS_CHUNK" \ - --log-raw test-wpt.log \ - --log-errorsummary wpt-errorsummary.log \ - --always-succeed \ - | cat - ./mach filter-intermittents \ - wpt-errorsummary.log \ - --log-intermittents intermittents.log \ - --log-filteredsummary filtered-wpt-errorsummary.log \ - --tracker-api default \ - --reporter-api default - """) + else: + task.with_script(""" + ./mach test-wpt \ + --release \ + --processes $PROCESSES \ + --total-chunks "$TOTAL_CHUNKS" \ + --this-chunk "$THIS_CHUNK" \ + --log-raw test-wpt.log \ + --log-errorsummary wpt-errorsummary.log \ + --always-succeed \ + | cat + ./mach filter-intermittents \ + wpt-errorsummary.log \ + --log-intermittents intermittents.log \ + --log-filteredsummary filtered-wpt-errorsummary.log \ + --tracker-api default \ + --reporter-api default + """) task.with_artifacts(*[ "%s/%s" % (repo_dir, word) for script in task.scripts diff --git a/etc/taskcluster/decisionlib.py b/etc/taskcluster/decisionlib.py index 488ae989f5c..acd8556ad79 100644 --- a/etc/taskcluster/decisionlib.py +++ b/etc/taskcluster/decisionlib.py @@ -144,6 +144,7 @@ class Task: self.routes = [] self.extra = {} self.treeherder_required = False + self.priority = None # Defaults to 'lowest' # All `with_*` methods return `self`, so multiple method calls can be chained. with_description = chaining(setattr, "description") @@ -153,6 +154,7 @@ class Task: with_deadline_in = chaining(setattr, "deadline_in") with_expires_in = chaining(setattr, "expires_in") with_index_and_artifacts_expire_in = chaining(setattr, "index_and_artifacts_expire_in") + with_priority = chaining(setattr, "priority") with_dependencies = chaining(append_to_attr, "dependencies") with_scopes = chaining(append_to_attr, "scopes") @@ -248,6 +250,7 @@ class Task: scopes=scopes, routes=routes, extra=self.extra, + priority=self.priority, ) task_id = taskcluster.slugId() |