aboutsummaryrefslogtreecommitdiffstats
path: root/etc/taskcluster/decision_task.py
diff options
context:
space:
mode:
Diffstat (limited to 'etc/taskcluster/decision_task.py')
-rw-r--r--etc/taskcluster/decision_task.py51
1 files changed, 33 insertions, 18 deletions
diff --git a/etc/taskcluster/decision_task.py b/etc/taskcluster/decision_task.py
index efebbaec2dc..9342e658830 100644
--- a/etc/taskcluster/decision_task.py
+++ b/etc/taskcluster/decision_task.py
@@ -10,12 +10,23 @@ from decisionlib import CONFIG, SHARED
def main(task_for):
+ with decisionlib.make_repo_bundle():
+ tasks(task_for)
+
+
+def tasks(task_for):
if CONFIG.git_ref.startswith("refs/heads/"):
branch = CONFIG.git_ref[len("refs/heads/"):]
CONFIG.treeherder_repository_name = "servo-" + (
branch if not branch.startswith("try-") else "try"
)
+ # Work around a tc-github bug/limitation:
+ # https://bugzilla.mozilla.org/show_bug.cgi?id=1548781#c4
+ if task_for.startswith("github"):
+ # https://github.com/taskcluster/taskcluster/blob/21f257dc8/services/github/config.yml#L14
+ CONFIG.routes_for_all_subtasks.append("statuses")
+
# The magicleap build is broken until there's a surfman back end
magicleap_dev = lambda: None
magicleap_nightly = lambda: None
@@ -166,7 +177,7 @@ def linux_tidy_unit_untrusted():
.with_max_run_time_minutes(60)
.with_dockerfile(dockerfile_path("build"))
.with_env(**build_env, **unix_build_env, **linux_build_env)
- .with_repo()
+ .with_repo_bundle()
.with_script("rustup set profile minimal")
# required by components/script_plugins:
.with_script("rustup component add rustc-dev")
@@ -378,7 +389,7 @@ def android_x86_release():
def android_x86_wpt():
build_task = android_x86_release()
- return (
+ task = (
linux_task("WPT")
.with_treeherder("Android x86")
.with_provisioner_id("proj-servo")
@@ -386,8 +397,13 @@ def android_x86_wpt():
.with_capabilities(privileged=True)
.with_scopes("project:servo:docker-worker-kvm:capability:privileged")
.with_dockerfile(dockerfile_path("run-android-emulator"))
- .with_repo()
- .with_curl_artifact_script(build_task, "servoapp.apk", "target/android/i686-linux-android/release")
+ .with_repo_bundle()
+ )
+ apk_dir = "target/android/i686-linux-android/release"
+ return (
+ task
+ .with_script("mkdir -p " + apk_dir)
+ .with_curl_artifact_script(build_task, "servoapp.apk", apk_dir)
.with_script("""
./mach bootstrap-android --accept-all-licences --emulator-x86
./mach test-android-startup --release
@@ -551,7 +567,7 @@ def linux_wpt():
.find_or_create("build.linux_x64_release_w_assertions" + CONFIG.task_id())
)
def linux_run_task(name):
- return linux_task(name).with_dockerfile(dockerfile_path("run"))
+ return linux_task(name).with_dockerfile(dockerfile_path("run")).with_repo_bundle()
wpt_chunks("Linux x64", linux_run_task, release_build_task, repo_dir="/repo",
total_chunks=4, processes=12)
@@ -585,14 +601,14 @@ def update_wpt():
.with_scopes("secrets:get:project/servo/wpt-sync")
.with_index_and_artifacts_expire_in(log_artifacts_expire_in)
.with_max_run_time_minutes(6 * 60)
+ # Not using the bundle, pushing the new changes to the git remote requires a full repo.
+ .with_repo(alternate_object_dir="/var/cache/servo.git/objects")
)
return (
with_homebrew(update_task, [
- "etc/taskcluster/macos/Brewfile-wpt",
- "etc/taskcluster/macos/Brewfile-gstreamer",
+ "etc/taskcluster/macos/Brewfile-wpt-update",
+ "etc/taskcluster/macos/Brewfile",
])
- # Pushing the new changes to the git remote requires a full repo clone.
- .with_repo(shallow=False, alternate_object_dir="/var/cache/servo.git/objects")
.with_curl_artifact_script(build_task, "target.tar.gz")
.with_script("""
export PKG_CONFIG_PATH="$(brew --prefix libffi)/lib/pkgconfig/"
@@ -628,21 +644,21 @@ def macos_wpt():
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"])
+ task = macos_task(name).with_python2() \
+ .with_repo_bundle(alternate_object_dir="/var/cache/servo.git/objects")
+ return with_homebrew(task, ["etc/taskcluster/macos/Brewfile"])
wpt_chunks(
"macOS x64",
macos_run_task,
build_task,
repo_dir="repo",
- repo_kwargs=dict(alternate_object_dir="/var/cache/servo.git/objects"),
total_chunks=30,
processes=4,
)
def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
- repo_dir, chunks="all", repo_kwargs={}):
+ repo_dir, chunks="all"):
if chunks == "all":
chunks = range(total_chunks + 1)
for this_chunk in chunks:
@@ -651,7 +667,6 @@ def wpt_chunks(platform, make_chunk_task, build_task, total_chunks, processes,
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")
.with_script("tar -xzf target.tar.gz")
.with_index_and_artifacts_expire_in(log_artifacts_expire_in)
@@ -798,7 +813,7 @@ def linux_build_task(name, *, build_env=build_env, install_rustc_dev=True):
.with_max_run_time_minutes(60)
.with_dockerfile(dockerfile_path("build"))
.with_env(**build_env, **unix_build_env, **linux_build_env)
- .with_repo()
+ .with_repo_bundle()
.with_script("rustup set profile minimal")
)
if install_rustc_dev:
@@ -841,7 +856,7 @@ def windows_build_task(name, package=True, arch="x86_64"):
**windows_build_env[arch],
**windows_build_env["all"]
)
- .with_repo(sparse_checkout=windows_sparse_checkout)
+ .with_repo_bundle(sparse_checkout=windows_sparse_checkout)
.with_python2()
.with_directory_mount(
"https://www.python.org/ftp/python/3.7.3/python-3.7.3-embed-amd64.zip",
@@ -894,7 +909,7 @@ def macos_build_task(name):
# https://github.com/servo/servo/issues/24735
.with_max_run_time_minutes(60 * 2)
.with_env(**build_env, **unix_build_env, **macos_build_env)
- .with_repo(alternate_object_dir="/var/cache/servo.git/objects")
+ .with_repo_bundle(alternate_object_dir="/var/cache/servo.git/objects")
.with_python2()
.with_rustup()
# Since macOS workers are long-lived and ~/.rustup kept across tasks:
@@ -910,7 +925,7 @@ def macos_build_task(name):
return (
with_homebrew(build_task, [
"etc/taskcluster/macos/Brewfile",
- "etc/taskcluster/macos/Brewfile-gstreamer",
+ "etc/taskcluster/macos/Brewfile-build",
])
.with_script("""
export OPENSSL_INCLUDE_DIR="$(brew --prefix openssl)/include"