diff options
Diffstat (limited to '')
-rw-r--r-- | taskcluster/gecko_taskgraph/__init__.py | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/taskcluster/gecko_taskgraph/__init__.py b/taskcluster/gecko_taskgraph/__init__.py new file mode 100644 index 0000000000..f1de1e9120 --- /dev/null +++ b/taskcluster/gecko_taskgraph/__init__.py @@ -0,0 +1,68 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +import os + +from taskgraph import config as taskgraph_config +from taskgraph import morph as taskgraph_morph +from taskgraph.util import schema +from taskgraph.util import taskcluster as tc_util + +from gecko_taskgraph.config import graph_config_schema + +GECKO = os.path.normpath(os.path.realpath(os.path.join(__file__, "..", "..", ".."))) + +# Maximum number of dependencies a single task can have +# https://firefox-ci-tc.services.mozilla.com/docs/reference/platform/queue/task-schema +# specifies 100, but we also optionally add the decision task id as a dep in +# taskgraph.create, so let's set this to 99. +MAX_DEPENDENCIES = 99 + +# Overwrite Taskgraph's default graph_config_schema with a custom one. +taskgraph_config.graph_config_schema = graph_config_schema + +# Don't use any of the upstream morphs. +# TODO Investigate merging our morphs with upstream. +taskgraph_morph.registered_morphs = [] + +# Default rootUrl to use if none is given in the environment; this should point +# to the production Taskcluster deployment used for CI. +tc_util.PRODUCTION_TASKCLUSTER_ROOT_URL = "https://firefox-ci-tc.services.mozilla.com" + +# Schemas for YAML files should use dashed identifiers by default. If there are +# components of the schema for which there is a good reason to use another format, +# exceptions can be added here. +schema.EXCEPTED_SCHEMA_IDENTIFIERS.extend( + [ + "test_name", + "json_location", + "video_location", + "profile_name", + "target_path", + "try_task_config", + ] +) + + +def register(graph_config): + """Used to register Gecko specific extensions. + + Args: + graph_config: The graph configuration object. + """ + from taskgraph import generator + + from gecko_taskgraph import ( # noqa: trigger target task method registration + morph, # noqa: trigger morph registration + target_tasks, + ) + from gecko_taskgraph.parameters import register_parameters + from gecko_taskgraph.util import dependencies # noqa: trigger group_by registration + from gecko_taskgraph.util.verify import verifications + + # Don't use the upstream verifications, and replace them with our own. + # TODO Investigate merging our verifications with upstream. + generator.verifications = verifications + + register_parameters() |