diff options
Diffstat (limited to 'taskcluster/gecko_taskgraph/parameters.py')
-rw-r--r-- | taskcluster/gecko_taskgraph/parameters.py | 137 |
1 files changed, 137 insertions, 0 deletions
diff --git a/taskcluster/gecko_taskgraph/parameters.py b/taskcluster/gecko_taskgraph/parameters.py new file mode 100644 index 0000000000..2a61a71b96 --- /dev/null +++ b/taskcluster/gecko_taskgraph/parameters.py @@ -0,0 +1,137 @@ +# 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 logging +import os + +from taskgraph.parameters import extend_parameters_schema +from voluptuous import Any, Optional, Required + +from gecko_taskgraph import GECKO + +logger = logging.getLogger(__name__) + + +gecko_parameters_schema = { + Required("app_version"): str, + Required("backstop"): bool, + Required("build_number"): int, + Required("enable_always_target"): Any(bool, [str]), + Required("hg_branch"): str, + Required("message"): str, + Required("next_version"): Any(None, str), + Required("optimize_strategies"): Any(None, str), + Required("phabricator_diff"): Any(None, str), + Required("release_enable_emefree"): bool, + Required("release_enable_partner_repack"): bool, + Required("release_enable_partner_attribution"): bool, + Required("release_eta"): Any(None, str), + Required("release_history"): {str: dict}, + Required("release_partners"): Any(None, [str]), + Required("release_partner_config"): Any(None, dict), + Required("release_partner_build_number"): int, + Required("release_type"): str, + Required("release_product"): Any(None, str), + Required("required_signoffs"): [str], + Required("signoff_urls"): dict, + Required("test_manifest_loader"): str, + Required("try_mode"): Any(None, str), + Required("try_options"): Any(None, dict), + Required("try_task_config"): { + Optional("tasks"): [str], + Optional("browsertime"): bool, + Optional("chemspill-prio"): bool, + Optional("disable-pgo"): bool, + Optional("env"): {str: str}, + Optional("gecko-profile"): bool, + Optional("gecko-profile-interval"): float, + Optional("gecko-profile-entries"): int, + Optional("gecko-profile-features"): str, + Optional("gecko-profile-threads"): str, + Optional( + "new-test-config", + description="adjust parameters, chunks, etc. to speed up the process " + "of greening up a new test config.", + ): bool, + Optional( + "perftest-options", + description="Options passed from `mach perftest` to try.", + ): object, + Optional( + "optimize-strategies", + description="Alternative optimization strategies to use instead of the default. " + "A module path pointing to a dict to be use as the `strategy_override` " + "argument in `taskgraph.optimize.base.optimize_task_graph`.", + ): str, + Optional("rebuild"): int, + Optional("tasks-regex"): { + "include": Any(None, [str]), + "exclude": Any(None, [str]), + }, + Optional("use-artifact-builds"): bool, + Optional( + "worker-overrides", + description="Mapping of worker alias to worker pools to use for those aliases.", + ): {str: str}, + Optional("routes"): [str], + }, + Required("version"): str, +} + + +def get_contents(path): + with open(path, "r") as fh: + contents = fh.readline().rstrip() + return contents + + +def get_version(product_dir="browser"): + version_path = os.path.join(GECKO, product_dir, "config", "version_display.txt") + return get_contents(version_path) + + +def get_app_version(product_dir="browser"): + app_version_path = os.path.join(GECKO, product_dir, "config", "version.txt") + return get_contents(app_version_path) + + +def get_defaults(repo_root=None): + return { + "app_version": get_app_version(), + "backstop": False, + "base_repository": "https://hg.mozilla.org/mozilla-unified", + "build_number": 1, + "enable_always_target": ["docker-image"], + "head_repository": "https://hg.mozilla.org/mozilla-central", + "hg_branch": "default", + "message": "", + "next_version": None, + "optimize_strategies": None, + "phabricator_diff": None, + "project": "mozilla-central", + "release_enable_emefree": False, + "release_enable_partner_repack": False, + "release_enable_partner_attribution": False, + "release_eta": "", + "release_history": {}, + "release_partners": [], + "release_partner_config": None, + "release_partner_build_number": 1, + "release_product": None, + "release_type": "nightly", + # This refers to the upstream repo rather than the local checkout, so + # should be hardcoded to 'hg' even with git-cinnabar. + "repository_type": "hg", + "required_signoffs": [], + "signoff_urls": {}, + "test_manifest_loader": "default", + "try_mode": None, + "try_options": None, + "try_task_config": {}, + "version": get_version(), + } + + +def register_parameters(): + extend_parameters_schema(gecko_parameters_schema, defaults_fn=get_defaults) |