diff options
author | bors-servo <servo-ops@mozilla.com> | 2020-04-03 12:16:12 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-03 12:16:12 -0400 |
commit | 7ba88247baf27eddde07cd6097bd0f2de0171122 (patch) | |
tree | 391308903f2d5ba135c268a832c467d3e1819873 | |
parent | e23fbd25e65397a8f53812085edb5538f2d1ff44 (diff) | |
parent | 5b546dc3c0113938d4f2e2f7b5b112258469438d (diff) | |
download | servo-7ba88247baf27eddde07cd6097bd0f2de0171122.tar.gz servo-7ba88247baf27eddde07cd6097bd0f2de0171122.zip |
Auto merge of #26102 - servo:rdp, r=paulrouget
Add support for requersting RDP access from generic-worker
Fixes https://github.com/servo/servo/issues/26082
Depends on:
* [x] https://github.com/mozilla/community-tc-config/pull/252
* [x] https://github.com/servo/taskcluster-config/pull/24
* [x] https://github.com/servo/saltfs/pull/997
* [ ] https://github.com/mozilla/treeherder/pull/6265 (for relevant tasks to show up in https://treeherder.mozilla.org/#/jobs?repo=servo-try)
-rw-r--r-- | etc/taskcluster/decision_task.py | 69 | ||||
-rw-r--r-- | etc/taskcluster/decisionlib.py | 20 |
2 files changed, 55 insertions, 34 deletions
diff --git a/etc/taskcluster/decision_task.py b/etc/taskcluster/decision_task.py index c5407f66fe7..968fe6bdc11 100644 --- a/etc/taskcluster/decision_task.py +++ b/etc/taskcluster/decision_task.py @@ -6,6 +6,7 @@ import os.path import decisionlib +import functools from decisionlib import CONFIG, SHARED @@ -62,6 +63,10 @@ def tasks(task_for): "try-wpt-2020": [linux_wpt_layout_2020], "try-wpt-mac": [macos_wpt], } + by_branch_name["try-windows-rdp"] = [ + functools.partial(f, rdp=True) for f in by_branch_name["try-windows"] + ] + for function in by_branch_name.get(branch, []): function() @@ -80,7 +85,7 @@ def tasks(task_for): elif task_for == "try-windows-ami": CONFIG.git_sha_is_current_head() CONFIG.windows_worker_type = os.environ["NEW_AMI_WORKER_TYPE"] - windows_unit(cached=False) + windows_unit(cached=False, rdp=True) # https://tools.taskcluster.net/hooks/project-servo/daily elif task_for == "daily": @@ -307,9 +312,9 @@ def appx_artifact(debug): ]) -def windows_arm64(): +def windows_arm64(rdp=False): return ( - windows_build_task("UWP dev build", arch="arm64", package=False) + windows_build_task("UWP dev build", arch="arm64", package=False, rdp=rdp) .with_treeherder("Windows arm64", "UWP-Dev") .with_features("taskclusterProxy") .with_scopes("secrets:get:project/servo/windows-codesign-cert/latest") @@ -322,9 +327,9 @@ def windows_arm64(): ) -def windows_uwp_x64(): +def windows_uwp_x64(rdp=False): return ( - windows_build_task("UWP dev build", package=False) + windows_build_task("UWP dev build", package=False, rdp=rdp) .with_treeherder("Windows x64", "UWP-Dev") .with_features("taskclusterProxy") .with_scopes("secrets:get:project/servo/windows-codesign-cert/latest") @@ -338,9 +343,9 @@ def windows_uwp_x64(): ) -def uwp_nightly(): +def uwp_nightly(rdp=False): return ( - windows_build_task("Nightly UWP build and upload", package=False) + windows_build_task("Nightly UWP build and upload", package=False, rdp=rdp) .with_treeherder("Windows x64", "UWP-Nightly") .with_features("taskclusterProxy") .with_scopes( @@ -359,9 +364,9 @@ def uwp_nightly(): ) -def windows_unit(cached=True): +def windows_unit(cached=True, rdp=False): task = ( - windows_build_task("Dev build + unit tests") + windows_build_task("Dev build + unit tests", rdp=rdp) .with_treeherder("Windows x64", "Unit") .with_script( # Not necessary as this would be done at the start of `build`, @@ -389,9 +394,9 @@ def windows_unit(cached=True): return task.create() -def windows_nightly(): +def windows_nightly(rdp=False): return ( - windows_build_task("Nightly build and upload") + windows_build_task("Nightly build and upload", rdp=rdp) .with_treeherder("Windows x64", "Nightly") .with_features("taskclusterProxy") .with_scopes("secrets:get:project/servo/s3-upload-credentials") @@ -714,7 +719,6 @@ def windows_task(name): def macos_task(name): return ( decisionlib.MacOsGenericWorkerTask(name) - .with_provisioner_id("proj-servo") .with_worker_type(CONFIG.macos_worker_type) .with_treeherder_required() ) @@ -742,7 +746,7 @@ def linux_build_task(name, *, build_env=build_env): return task -def windows_build_task(name, package=True, arch="x86_64"): +def windows_build_task(name, package=True, arch="x86_64", rdp=False): hashes = { "devel": { "x86_64": "c136cbfb0330041d52fe6ec4e3e468563176333c857f6ed71191ebc37fc9d605", @@ -773,30 +777,27 @@ def windows_build_task(name, package=True, arch="x86_64"): .with_rustup() ) if arch in hashes["non-devel"] and arch in hashes["devel"]: - task = ( - task.with_repacked_msi( - url=("https://gstreamer.freedesktop.org/data/pkg/windows/" + - "%s/gstreamer-1.0-%s-%s-%s.msi" % (version, prefix[arch], arch, version)), - sha256=hashes["non-devel"][arch], - path="gst", - ) - .with_repacked_msi( - url=("https://gstreamer.freedesktop.org/data/pkg/windows/" + - "%s/gstreamer-1.0-devel-%s-%s-%s.msi" % (version, prefix[arch], arch, version)), - sha256=hashes["devel"][arch], - path="gst", - ) + task.with_repacked_msi( + url=("https://gstreamer.freedesktop.org/data/pkg/windows/" + + "%s/gstreamer-1.0-%s-%s-%s.msi" % (version, prefix[arch], arch, version)), + sha256=hashes["non-devel"][arch], + path="gst", + ) + task.with_repacked_msi( + url=("https://gstreamer.freedesktop.org/data/pkg/windows/" + + "%s/gstreamer-1.0-devel-%s-%s-%s.msi" % (version, prefix[arch], arch, version)), + sha256=hashes["devel"][arch], + path="gst", ) if package: - task = ( - task - .with_directory_mount( - "https://github.com/wixtoolset/wix3/releases/download/wix3111rtm/wix311-binaries.zip", - sha256="37f0a533b0978a454efb5dc3bd3598becf9660aaf4287e55bf68ca6b527d051d", - path="wix", - ) - .with_path_from_homedir("wix") + task.with_directory_mount( + "https://github.com/wixtoolset/wix3/releases/download/wix3111rtm/wix311-binaries.zip", + sha256="37f0a533b0978a454efb5dc3bd3598becf9660aaf4287e55bf68ca6b527d051d", + path="wix", ) + task.with_path_from_homedir("wix") + if rdp: + task.with_rdp_info(artifact_name="project/servo/rdp-info") return task diff --git a/etc/taskcluster/decisionlib.py b/etc/taskcluster/decisionlib.py index 3380d3b8903..ec6c6b50479 100644 --- a/etc/taskcluster/decisionlib.py +++ b/etc/taskcluster/decisionlib.py @@ -458,10 +458,30 @@ class WindowsGenericWorkerTask(GenericWorkerTask): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.scripts = [] + self.rdp_info_artifact_name = None with_script = chaining(append_to_attr, "scripts") with_early_script = chaining(prepend_to_attr, "scripts") + def build_worker_payload(self): + if self.rdp_info_artifact_name: + rdp_scope = "generic-worker:allow-rdp:%s/%s" % (self.provisioner_id, self.worker_type) + self.scopes.append(rdp_scope) + return dict_update_if_truthy( + super().build_worker_payload(), + rdpInfo=self.rdp_info_artifact_name, + ) + + def with_rdp_info(self, *, artifact_name): + """ + Enable RDP access to this task’s environment. + + See `rdpInfo` in + <https://community-tc.services.mozilla.com/docs/reference/workers/generic-worker/multiuser-windows-payload> + """ + assert not artifact_name.startswith("public/") + self.rdp_info_artifact_name = artifact_name + def build_command(self): return [deindent(s) for s in self.scripts] |