taskcluster-taskgraph 6.3.1__tar.gz → 7.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {taskcluster-taskgraph-6.3.1/src/taskcluster_taskgraph.egg-info → taskcluster-taskgraph-7.0.0}/PKG-INFO +1 -2
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/README.rst +1 -1
- taskcluster-taskgraph-7.0.0/pyproject.toml +61 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/requirements/base.txt +0 -14
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/requirements/dev.txt +0 -8
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/requirements/test.in +1 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/requirements/test.txt +15 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/setup.py +0 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0/src/taskcluster_taskgraph.egg-info}/PKG-INFO +1 -2
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/SOURCES.txt +8 -9
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/__init__.py +1 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/config.py +5 -6
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/create.py +1 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/decision.py +7 -7
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/generator.py +4 -4
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/loader/default.py +2 -2
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/main.py +25 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/run-task +1 -3
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/target_tasks.py +4 -4
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/base.py +1 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/code_review.py +5 -5
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/fetch.py +30 -30
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/from_deps.py +1 -1
- {taskcluster-taskgraph-6.3.1/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/__init__.py +102 -100
- {taskcluster-taskgraph-6.3.1/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/common.py +17 -23
- {taskcluster-taskgraph-6.3.1/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/index_search.py +4 -4
- {taskcluster-taskgraph-6.3.1/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/run_task.py +18 -18
- {taskcluster-taskgraph-6.3.1/src/taskgraph/transforms/job → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms/run}/toolchain.py +19 -19
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/task.py +23 -17
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/task_context.py +5 -5
- taskcluster-taskgraph-7.0.0/src/taskgraph/util/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/docker.py +1 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/hash.py +5 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/parameterization.py +6 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/schema.py +3 -3
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/taskcluster.py +1 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/treeherder.py +9 -6
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/vcs.py +0 -34
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_generator.py +6 -6
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_main.py +4 -4
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_morph.py +1 -3
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transforms_notify.py +2 -5
- taskcluster-taskgraph-6.3.1/test/test_transforms_job.py → taskcluster-taskgraph-7.0.0/test/test_transforms_run.py +11 -11
- taskcluster-taskgraph-6.3.1/test/test_transforms_job_run_task.py → taskcluster-taskgraph-7.0.0/test/test_transforms_run_run_task.py +5 -5
- taskcluster-taskgraph-6.3.1/test/test_transforms_job_toolchain.py → taskcluster-taskgraph-7.0.0/test/test_transforms_run_toolchain.py +16 -16
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_docker.py +1 -1
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_parameterization.py +9 -1
- taskcluster-taskgraph-6.3.1/pyproject.toml +0 -31
- taskcluster-taskgraph-6.3.1/src/taskgraph/transforms/__init__.py +0 -3
- taskcluster-taskgraph-6.3.1/src/taskgraph/util/decision.py +0 -79
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/LICENSE +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/MANIFEST.in +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/requirements/base.in +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/requirements/dev.in +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/setup.cfg +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/dependency_links.txt +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/entry_points.txt +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/requires.txt +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskcluster_taskgraph.egg-info/top_level.txt +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/cancel.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/cancel_all.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/registry.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/retrigger.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/actions/util.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/docker.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/files_changed.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/filter_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/graph.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/loader/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/loader/transform.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/morph.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/optimize/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/optimize/base.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/optimize/strategies.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/parameters.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/fetch-content +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/hgrc +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/task.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/taskgraph.py +0 -0
- {taskcluster-taskgraph-6.3.1/src/taskgraph/util → taskcluster-taskgraph-7.0.0/src/taskgraph/transforms}/__init__.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/chunking.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/docker_image.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/notify.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/archive.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/attributes.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/dependencies.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/keyed_by.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/memoize.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/path.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/python_path.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/readonlydict.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/shell.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/taskgraph.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/templates.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/time.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/verify.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/workertypes.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/util/yaml.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_actions_registry.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_create.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_decision.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_files_changed.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_graph.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_optimize.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_optimize_strategies.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_parameters.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_scripts_fetch_content.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_scripts_run_task.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_target_tasks.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_taskgraph.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transform_chunking.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transform_docker_image.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transform_task_context.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transforms_base.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transforms_fetch.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transforms_from_deps.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_transforms_task.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_attributes.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_dependencies.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_memoize.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_path.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_python_path.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_readonlydict.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_schema.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_taskcluster.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_templates.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_time.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_treeherder.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_vcs.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_verify.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_workertypes.py +0 -0
- {taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/test/test_util_yaml.py +0 -0
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.0
|
|
4
4
|
Summary: Build taskcluster taskgraphs
|
|
5
5
|
Home-page: https://github.com/taskcluster/taskgraph
|
|
6
6
|
Classifier: Development Status :: 5 - Production/Stable
|
|
7
7
|
Classifier: Environment :: Console
|
|
8
8
|
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.8
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.9
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
[tool.black]
|
|
2
|
+
line-length = 88
|
|
3
|
+
extend-exclude = """(\
|
|
4
|
+
taskcluster/scripts/external_tools)\
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
[tool.pytest.ini_options]
|
|
8
|
+
xfail_strict = true
|
|
9
|
+
|
|
10
|
+
[tool.coverage.run]
|
|
11
|
+
parallel = true
|
|
12
|
+
branch = true
|
|
13
|
+
source = ["src/taskgraph/", "taskgraph", "src/taskgraph/run-task/"]
|
|
14
|
+
|
|
15
|
+
[tool.ruff]
|
|
16
|
+
select = [
|
|
17
|
+
"E", "W", # pycodestyle
|
|
18
|
+
"F", # pyflakes
|
|
19
|
+
"I", # isort
|
|
20
|
+
"PLC", "PLE", # pylint
|
|
21
|
+
"UP", # pyupgrade
|
|
22
|
+
]
|
|
23
|
+
ignore = [
|
|
24
|
+
"E402",
|
|
25
|
+
"E501", # let black handle line-length
|
|
26
|
+
"E741",
|
|
27
|
+
]
|
|
28
|
+
target-version = "py38"
|
|
29
|
+
|
|
30
|
+
[tool.ruff.isort]
|
|
31
|
+
known-first-party = ["taskgraph"]
|
|
32
|
+
|
|
33
|
+
[tool.pyright]
|
|
34
|
+
include = ["src"]
|
|
35
|
+
exclude = [ # TODO fix errors in these files
|
|
36
|
+
"src/taskgraph/decision.py",
|
|
37
|
+
"src/taskgraph/docker.py",
|
|
38
|
+
"src/taskgraph/files_changed.py",
|
|
39
|
+
"src/taskgraph/generator.py",
|
|
40
|
+
"src/taskgraph/graph.py",
|
|
41
|
+
"src/taskgraph/main.py",
|
|
42
|
+
"src/taskgraph/morph.py",
|
|
43
|
+
"src/taskgraph/parameters.py",
|
|
44
|
+
"src/taskgraph/taskgraph.py",
|
|
45
|
+
"src/taskgraph/actions/cancel.py",
|
|
46
|
+
"src/taskgraph/actions/cancel_all.py",
|
|
47
|
+
"src/taskgraph/actions/rebuild_cached_tasks.py",
|
|
48
|
+
"src/taskgraph/actions/util.py",
|
|
49
|
+
"src/taskgraph/optimize/base.py",
|
|
50
|
+
"src/taskgraph/run-task/robustcheckout.py",
|
|
51
|
+
"src/taskgraph/transforms/fetch.py",
|
|
52
|
+
"src/taskgraph/transforms/task.py",
|
|
53
|
+
"src/taskgraph/transforms/run/run_task.py",
|
|
54
|
+
"src/taskgraph/util/cached_tasks.py",
|
|
55
|
+
"src/taskgraph/util/decision.py",
|
|
56
|
+
"src/taskgraph/util/python_path.py",
|
|
57
|
+
"src/taskgraph/util/schema.py",
|
|
58
|
+
"src/taskgraph/util/taskcluster.py",
|
|
59
|
+
"src/taskgraph/util/vcs.py",
|
|
60
|
+
"src/taskgraph/util/workertypes.py",
|
|
61
|
+
]
|
|
@@ -118,10 +118,6 @@ idna==3.4 \
|
|
|
118
118
|
--hash=sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4 \
|
|
119
119
|
--hash=sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2
|
|
120
120
|
# via requests
|
|
121
|
-
importlib-metadata==6.6.0 \
|
|
122
|
-
--hash=sha256:43dd286a2cd8995d5eaef7fee2066340423b818ed3fd70adf0bad5f1fac53fed \
|
|
123
|
-
--hash=sha256:92501cdf9cc66ebd3e612f1b4f0c0765dfa42f0fa38ffb319b6bd84dd675d705
|
|
124
|
-
# via click
|
|
125
121
|
jinja2==3.1.2 \
|
|
126
122
|
--hash=sha256:31351a702a408a9e7595a8fc6150fc3f43bb6bf7e319770cbc0db9df9437e852 \
|
|
127
123
|
--hash=sha256:6088930bfe239f0e6710546ab9c19c9ef35e29792895fed6e6e31a023a182a61
|
|
@@ -271,12 +267,6 @@ text-unidecode==1.3 \
|
|
|
271
267
|
--hash=sha256:1311f10e8b895935241623731c2ba64f4c455287888b18189350b67134a822e8 \
|
|
272
268
|
--hash=sha256:bad6603bb14d279193107714b288be206cac565dfa49aa5b105294dd5c4aab93
|
|
273
269
|
# via python-slugify
|
|
274
|
-
typing-extensions==4.6.3 \
|
|
275
|
-
--hash=sha256:88a4153d8505aabbb4e13aacb7c486c2b4a33ca3b3f807914a9b4c844c471c26 \
|
|
276
|
-
--hash=sha256:d91d5919357fe7f681a9f2b5b4cb2a5f1ef0a1e9f59c4d8ff0d3491e05c0ffd5
|
|
277
|
-
# via
|
|
278
|
-
# arrow
|
|
279
|
-
# importlib-metadata
|
|
280
270
|
urllib3==2.0.3 \
|
|
281
271
|
--hash=sha256:48e7fafa40319d358848e1bc6809b208340fafe2096f1725d05d67443d0483d1 \
|
|
282
272
|
--hash=sha256:bee28b5e56addb8226c96f7f13ac28cb4c301dd5ea8a6ca179c0b9835e032825
|
|
@@ -285,7 +275,3 @@ voluptuous==0.13.1 \
|
|
|
285
275
|
--hash=sha256:4b838b185f5951f2d6e8752b68fcf18bd7a9c26ded8f143f92d6d28f3921a3e6 \
|
|
286
276
|
--hash=sha256:e8d31c20601d6773cb14d4c0f42aee29c6821bbd1018039aac7ac5605b489723
|
|
287
277
|
# via -r requirements/base.in
|
|
288
|
-
zipp==3.15.0 \
|
|
289
|
-
--hash=sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b \
|
|
290
|
-
--hash=sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556
|
|
291
|
-
# via importlib-metadata
|
|
@@ -14,17 +14,9 @@ identify==2.5.24 \
|
|
|
14
14
|
--hash=sha256:0aac67d5b4812498056d28a9a512a483f5085cc28640b02b258a59dac34301d4 \
|
|
15
15
|
--hash=sha256:986dbfb38b1140e763e413e6feb44cd731faf72d1909543178aa79b0e258265d
|
|
16
16
|
# via pre-commit
|
|
17
|
-
nodeenv==1.8.0 \
|
|
18
|
-
--hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \
|
|
19
|
-
--hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec
|
|
20
|
-
# via pre-commit
|
|
21
17
|
pre-commit==2.21.0 \
|
|
22
18
|
--hash=sha256:31ef31af7e474a8d8995027fefdfcf509b5c913ff31f2015b4ec4beb26a6f658 \
|
|
23
19
|
--hash=sha256:e2f91727039fc39a92f58a588a25b87f936de6567eed4f0e673e0507edc75bad
|
|
24
20
|
# via -r requirements/dev.in
|
|
25
21
|
|
|
26
22
|
# The following packages are considered to be unsafe in a requirements file:
|
|
27
|
-
setuptools==67.8.0 \
|
|
28
|
-
--hash=sha256:5df61bf30bb10c6f756eb19e7c9f3b473051f48db77fddbe06ff2ca307df9a6f \
|
|
29
|
-
--hash=sha256:62642358adc77ffa87233bc4d2354c4b2682d214048f500964dbe760ccedf102
|
|
30
|
-
# via nodeenv
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# SHA1:
|
|
1
|
+
# SHA1:e6344ef3b0b270eae651e48034a25b9d9e8faa4a
|
|
2
2
|
#
|
|
3
3
|
# This file is autogenerated by pip-compile-multi
|
|
4
4
|
# To update, run:
|
|
@@ -98,6 +98,10 @@ mock==5.0.2 \
|
|
|
98
98
|
--hash=sha256:06f18d7d65b44428202b145a9a36e99c2ee00d1eb992df0caf881d4664377891 \
|
|
99
99
|
--hash=sha256:0e0bc5ba78b8db3667ad636d964eb963dc97a59f04c6f6214c5f0e4a8f726c56
|
|
100
100
|
# via -r requirements/test.in
|
|
101
|
+
nodeenv==1.8.0 \
|
|
102
|
+
--hash=sha256:d51e0c37e64fbf47d017feac3145cdbb58836d7eee8c6f6d3b6880c5456227d2 \
|
|
103
|
+
--hash=sha256:df865724bb3c3adc86b3876fa209771517b0cfe596beff01a92700e0e8be4cec
|
|
104
|
+
# via pyright
|
|
101
105
|
packaging==23.1 \
|
|
102
106
|
--hash=sha256:994793af429502c4ea2ebf6bf664629d07c1a9fe974af92966e4b8d2df7edc61 \
|
|
103
107
|
--hash=sha256:a392980d2b6cffa644431898be54b0045151319d1e7ec34f0cfed48767dd334f
|
|
@@ -121,6 +125,10 @@ pyproject-api==1.5.1 \
|
|
|
121
125
|
--hash=sha256:435f46547a9ff22cf4208ee274fca3e2869aeb062a4834adfc99a4dd64af3cf9 \
|
|
122
126
|
--hash=sha256:4698a3777c2e0f6b624f8a4599131e2a25376d90fe8d146d7ac74c67c6f97c43
|
|
123
127
|
# via tox
|
|
128
|
+
pyright==1.1.337 \
|
|
129
|
+
--hash=sha256:81d81f839d1750385390c4c4a7b84b062ece2f9a078f87055d4d2a5914ef2a08 \
|
|
130
|
+
--hash=sha256:8cbd4ef71797258f816a8393a758c9c91213479f472082d0e3a735ef7ab5f65a
|
|
131
|
+
# via -r requirements/test.in
|
|
124
132
|
pytest==7.3.1 \
|
|
125
133
|
--hash=sha256:3799fa815351fea3a5e96ac7e503a96fa51cc9942c3753cda7651b93c1cfa362 \
|
|
126
134
|
--hash=sha256:434afafd78b1d78ed0addf160ad2b77a30d35d4bdf8af234fe621919d9ed15e3
|
|
@@ -154,3 +162,9 @@ virtualenv==20.23.0 \
|
|
|
154
162
|
--hash=sha256:6abec7670e5802a528357fdc75b26b9f57d5d92f29c5462ba0fbe45feacc685e \
|
|
155
163
|
--hash=sha256:a85caa554ced0c0afbd0d638e7e2d7b5f92d23478d05d17a76daeac8f279f924
|
|
156
164
|
# via tox
|
|
165
|
+
|
|
166
|
+
# The following packages are considered to be unsafe in a requirements file:
|
|
167
|
+
setuptools==68.0.0 \
|
|
168
|
+
--hash=sha256:11e52c67415a381d10d6b462ced9cfb97066179f0e871399e006c4ab101fc85f \
|
|
169
|
+
--hash=sha256:baf1fdb41c6da4cd2eae722e135500da913332ab3f2f5c7d33af9b492acb5235
|
|
170
|
+
# via nodeenv
|
|
@@ -28,7 +28,6 @@ setup(
|
|
|
28
28
|
"Development Status :: 5 - Production/Stable",
|
|
29
29
|
"Environment :: Console",
|
|
30
30
|
"License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)",
|
|
31
|
-
"Programming Language :: Python :: 3.7",
|
|
32
31
|
"Programming Language :: Python :: 3.8",
|
|
33
32
|
"Programming Language :: Python :: 3.9",
|
|
34
33
|
"Programming Language :: Python :: 3.10",
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version:
|
|
3
|
+
Version: 7.0.0
|
|
4
4
|
Summary: Build taskcluster taskgraphs
|
|
5
5
|
Home-page: https://github.com/taskcluster/taskgraph
|
|
6
6
|
Classifier: Development Status :: 5 - Production/Stable
|
|
7
7
|
Classifier: Environment :: Console
|
|
8
8
|
Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)
|
|
9
|
-
Classifier: Programming Language :: Python :: 3.7
|
|
10
9
|
Classifier: Programming Language :: Python :: 3.8
|
|
11
10
|
Classifier: Programming Language :: Python :: 3.9
|
|
12
11
|
Classifier: Programming Language :: Python :: 3.10
|
|
@@ -59,16 +59,15 @@ src/taskgraph/transforms/from_deps.py
|
|
|
59
59
|
src/taskgraph/transforms/notify.py
|
|
60
60
|
src/taskgraph/transforms/task.py
|
|
61
61
|
src/taskgraph/transforms/task_context.py
|
|
62
|
-
src/taskgraph/transforms/
|
|
63
|
-
src/taskgraph/transforms/
|
|
64
|
-
src/taskgraph/transforms/
|
|
65
|
-
src/taskgraph/transforms/
|
|
66
|
-
src/taskgraph/transforms/
|
|
62
|
+
src/taskgraph/transforms/run/__init__.py
|
|
63
|
+
src/taskgraph/transforms/run/common.py
|
|
64
|
+
src/taskgraph/transforms/run/index_search.py
|
|
65
|
+
src/taskgraph/transforms/run/run_task.py
|
|
66
|
+
src/taskgraph/transforms/run/toolchain.py
|
|
67
67
|
src/taskgraph/util/__init__.py
|
|
68
68
|
src/taskgraph/util/archive.py
|
|
69
69
|
src/taskgraph/util/attributes.py
|
|
70
70
|
src/taskgraph/util/cached_tasks.py
|
|
71
|
-
src/taskgraph/util/decision.py
|
|
72
71
|
src/taskgraph/util/dependencies.py
|
|
73
72
|
src/taskgraph/util/docker.py
|
|
74
73
|
src/taskgraph/util/hash.py
|
|
@@ -111,10 +110,10 @@ test/test_transform_task_context.py
|
|
|
111
110
|
test/test_transforms_base.py
|
|
112
111
|
test/test_transforms_fetch.py
|
|
113
112
|
test/test_transforms_from_deps.py
|
|
114
|
-
test/test_transforms_job.py
|
|
115
|
-
test/test_transforms_job_run_task.py
|
|
116
|
-
test/test_transforms_job_toolchain.py
|
|
117
113
|
test/test_transforms_notify.py
|
|
114
|
+
test/test_transforms_run.py
|
|
115
|
+
test/test_transforms_run_run_task.py
|
|
116
|
+
test/test_transforms_run_toolchain.py
|
|
118
117
|
test/test_transforms_task.py
|
|
119
118
|
test/test_util_attributes.py
|
|
120
119
|
test/test_util_dependencies.py
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
3
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
4
|
|
|
5
|
-
__version__ = "
|
|
5
|
+
__version__ = "7.0.0"
|
|
6
6
|
|
|
7
7
|
# Maximum number of dependencies a single task can have
|
|
8
8
|
# https://docs.taskcluster.net/reference/platform/taskcluster-queue/references/api#createTask
|
|
@@ -102,28 +102,27 @@ class GraphConfig:
|
|
|
102
102
|
Add the project's taskgraph directory to the python path, and register
|
|
103
103
|
any extensions present.
|
|
104
104
|
"""
|
|
105
|
-
modify_path = os.path.dirname(self.root_dir)
|
|
106
105
|
if GraphConfig._PATH_MODIFIED:
|
|
107
|
-
if GraphConfig._PATH_MODIFIED ==
|
|
106
|
+
if GraphConfig._PATH_MODIFIED == self.root_dir:
|
|
108
107
|
# Already modified path with the same root_dir.
|
|
109
108
|
# We currently need to do this to enable actions to call
|
|
110
109
|
# taskgraph_decision, e.g. relpro.
|
|
111
110
|
return
|
|
112
111
|
raise Exception("Can't register multiple directories on python path.")
|
|
113
|
-
GraphConfig._PATH_MODIFIED =
|
|
114
|
-
sys.path.insert(0,
|
|
112
|
+
GraphConfig._PATH_MODIFIED = self.root_dir
|
|
113
|
+
sys.path.insert(0, self.root_dir)
|
|
115
114
|
register_path = self["taskgraph"].get("register")
|
|
116
115
|
if register_path:
|
|
117
116
|
find_object(register_path)(self)
|
|
118
117
|
|
|
119
118
|
@property
|
|
120
119
|
def vcs_root(self):
|
|
121
|
-
if path.split(self.root_dir)[-
|
|
120
|
+
if path.split(self.root_dir)[-1:] != ["taskcluster"]:
|
|
122
121
|
raise Exception(
|
|
123
122
|
"Not guessing path to vcs root. "
|
|
124
123
|
"Graph config in non-standard location."
|
|
125
124
|
)
|
|
126
|
-
return os.path.dirname(
|
|
125
|
+
return os.path.dirname(self.root_dir)
|
|
127
126
|
|
|
128
127
|
@property
|
|
129
128
|
def taskcluster_yml(self):
|
|
@@ -104,7 +104,7 @@ def create_tasks(graph_config, taskgraph, label_to_taskid, params, decision_task
|
|
|
104
104
|
|
|
105
105
|
def create_task(session, task_id, label, task_def):
|
|
106
106
|
# create the task using 'http://taskcluster/queue', which is proxied to the queue service
|
|
107
|
-
# with credentials appropriate to this
|
|
107
|
+
# with credentials appropriate to this task.
|
|
108
108
|
|
|
109
109
|
# Resolve timestamps
|
|
110
110
|
now = current_json_time(datetime_format=True)
|
|
@@ -46,21 +46,21 @@ try_task_config_schema_v2 = Schema(
|
|
|
46
46
|
)
|
|
47
47
|
|
|
48
48
|
|
|
49
|
-
def
|
|
50
|
-
|
|
49
|
+
def full_task_graph_to_runnable_tasks(full_task_json):
|
|
50
|
+
runnable_tasks = {}
|
|
51
51
|
for label, node in full_task_json.items():
|
|
52
52
|
if not ("extra" in node["task"] and "treeherder" in node["task"]["extra"]):
|
|
53
53
|
continue
|
|
54
54
|
|
|
55
55
|
th = node["task"]["extra"]["treeherder"]
|
|
56
|
-
|
|
56
|
+
runnable_tasks[label] = {"symbol": th["symbol"]}
|
|
57
57
|
|
|
58
58
|
for i in ("groupName", "groupSymbol", "collection"):
|
|
59
59
|
if i in th:
|
|
60
|
-
|
|
60
|
+
runnable_tasks[label][i] = th[i]
|
|
61
61
|
if th.get("machine", {}).get("platform"):
|
|
62
|
-
|
|
63
|
-
return
|
|
62
|
+
runnable_tasks[label]["platform"] = th["machine"]["platform"]
|
|
63
|
+
return runnable_tasks
|
|
64
64
|
|
|
65
65
|
|
|
66
66
|
def taskgraph_decision(options, parameters=None):
|
|
@@ -104,7 +104,7 @@ def taskgraph_decision(options, parameters=None):
|
|
|
104
104
|
|
|
105
105
|
# write out the public/runnable-jobs.json file
|
|
106
106
|
write_artifact(
|
|
107
|
-
"runnable-jobs.json",
|
|
107
|
+
"runnable-jobs.json", full_task_graph_to_runnable_tasks(full_task_json)
|
|
108
108
|
)
|
|
109
109
|
|
|
110
110
|
# this is just a test to check whether the from_json() function is working
|
|
@@ -91,7 +91,7 @@ class Kind:
|
|
|
91
91
|
|
|
92
92
|
@classmethod
|
|
93
93
|
def load(cls, root_dir, graph_config, kind_name):
|
|
94
|
-
path = os.path.join(root_dir, kind_name)
|
|
94
|
+
path = os.path.join(root_dir, "kinds", kind_name)
|
|
95
95
|
kind_yml = os.path.join(path, "kind.yml")
|
|
96
96
|
if not os.path.exists(kind_yml):
|
|
97
97
|
raise KindNotFound(kind_yml)
|
|
@@ -125,13 +125,13 @@ class TaskGraphGenerator:
|
|
|
125
125
|
write_artifacts=False,
|
|
126
126
|
):
|
|
127
127
|
"""
|
|
128
|
-
@param root_dir: root directory
|
|
128
|
+
@param root_dir: root directory containing the Taskgraph config.yml file
|
|
129
129
|
@param parameters: parameters for this task-graph generation, or callable
|
|
130
130
|
taking a `GraphConfig` and returning parameters
|
|
131
131
|
@type parameters: Union[Parameters, Callable[[GraphConfig], Parameters]]
|
|
132
132
|
"""
|
|
133
133
|
if root_dir is None:
|
|
134
|
-
root_dir = "taskcluster
|
|
134
|
+
root_dir = "taskcluster"
|
|
135
135
|
self.root_dir = root_dir
|
|
136
136
|
self._parameters = parameters
|
|
137
137
|
self._decision_task_id = decision_task_id
|
|
@@ -243,7 +243,7 @@ class TaskGraphGenerator:
|
|
|
243
243
|
yield kind
|
|
244
244
|
queue.extend(kind.config.get("kind-dependencies", []))
|
|
245
245
|
else:
|
|
246
|
-
for kind_name in os.listdir(self.root_dir):
|
|
246
|
+
for kind_name in os.listdir(os.path.join(self.root_dir, "kinds")):
|
|
247
247
|
try:
|
|
248
248
|
yield Kind.load(self.root_dir, graph_config, kind_name)
|
|
249
249
|
except KindNotFound:
|
|
@@ -11,7 +11,7 @@ logger = logging.getLogger(__name__)
|
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
DEFAULT_TRANSFORMS = [
|
|
14
|
-
"taskgraph.transforms.
|
|
14
|
+
"taskgraph.transforms.run:transforms",
|
|
15
15
|
"taskgraph.transforms.task:transforms",
|
|
16
16
|
]
|
|
17
17
|
|
|
@@ -20,7 +20,7 @@ def loader(kind, path, config, params, loaded_tasks):
|
|
|
20
20
|
"""
|
|
21
21
|
This default loader builds on the `transform` loader by providing sensible
|
|
22
22
|
default transforms that the majority of simple tasks will need.
|
|
23
|
-
Specifically, `
|
|
23
|
+
Specifically, `run` and `task` transforms will be appended to the end of the
|
|
24
24
|
list of transforms in the kind being loaded.
|
|
25
25
|
"""
|
|
26
26
|
transform_refs = config.setdefault("transforms", [])
|
|
@@ -464,6 +464,8 @@ def show_taskgraph(options):
|
|
|
464
464
|
f"--label={options['graph_attr']}@{cur_rev}",
|
|
465
465
|
]
|
|
466
466
|
|
|
467
|
+
non_fatal_failures = []
|
|
468
|
+
|
|
467
469
|
for spec in parameters:
|
|
468
470
|
base_path = os.path.join(
|
|
469
471
|
diffdir, f"{options['graph_attr']}_{base_rev_file}"
|
|
@@ -476,7 +478,20 @@ def show_taskgraph(options):
|
|
|
476
478
|
base_path += f"_{params_name}"
|
|
477
479
|
cur_path += f"_{params_name}"
|
|
478
480
|
|
|
481
|
+
# If the base or cur files are missing it means that generation
|
|
482
|
+
# failed. If one of them failed but not the other, the failure is
|
|
483
|
+
# likely due to the patch making changes to taskgraph in modules
|
|
484
|
+
# that don't get reloaded (safe to ignore). If both generations
|
|
485
|
+
# failed, there's likely a real issue.
|
|
486
|
+
base_missing = not os.path.isfile(base_path)
|
|
487
|
+
cur_missing = not os.path.isfile(cur_path)
|
|
488
|
+
if base_missing != cur_missing: # != is equivalent to XOR for booleans
|
|
489
|
+
non_fatal_failures.append(os.path.basename(base_path))
|
|
490
|
+
continue
|
|
491
|
+
|
|
479
492
|
try:
|
|
493
|
+
# If the output file(s) are missing, this command will raise
|
|
494
|
+
# CalledProcessError with a returncode > 1.
|
|
480
495
|
proc = subprocess.run(
|
|
481
496
|
diffcmd + [base_path, cur_path],
|
|
482
497
|
capture_output=True,
|
|
@@ -501,6 +516,16 @@ def show_taskgraph(options):
|
|
|
501
516
|
params_spec=spec if len(parameters) > 1 else None,
|
|
502
517
|
)
|
|
503
518
|
|
|
519
|
+
if non_fatal_failures:
|
|
520
|
+
failstr = "\n ".join(sorted(non_fatal_failures))
|
|
521
|
+
print(
|
|
522
|
+
"WARNING: Diff skipped for the following generation{s} "
|
|
523
|
+
"due to failures:\n {failstr}".format(
|
|
524
|
+
s="s" if len(non_fatal_failures) > 1 else "", failstr=failstr
|
|
525
|
+
),
|
|
526
|
+
file=sys.stderr,
|
|
527
|
+
)
|
|
528
|
+
|
|
504
529
|
if options["format"] != "json":
|
|
505
530
|
print(
|
|
506
531
|
"If you were expecting differences in task bodies "
|
|
@@ -787,9 +787,7 @@ def hg_checkout(
|
|
|
787
787
|
branch: Optional[str],
|
|
788
788
|
revision: Optional[str],
|
|
789
789
|
):
|
|
790
|
-
if IS_MACOSX:
|
|
791
|
-
hg_bin = "/tools/python27-mercurial/bin/hg"
|
|
792
|
-
elif IS_POSIX:
|
|
790
|
+
if IS_MACOSX or IS_POSIX:
|
|
793
791
|
hg_bin = "hg"
|
|
794
792
|
elif IS_WINDOWS:
|
|
795
793
|
# This is where OCC installs it in the AMIs.
|
|
@@ -14,7 +14,7 @@ _target_task_methods = {}
|
|
|
14
14
|
_GIT_REFS_HEADS_PREFIX = "refs/heads/"
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
def
|
|
17
|
+
def register_target_task(name):
|
|
18
18
|
def wrap(func):
|
|
19
19
|
_target_task_methods[name] = func
|
|
20
20
|
return func
|
|
@@ -81,7 +81,7 @@ def standard_filter(task, parameters):
|
|
|
81
81
|
)
|
|
82
82
|
|
|
83
83
|
|
|
84
|
-
@
|
|
84
|
+
@register_target_task("default")
|
|
85
85
|
def target_tasks_default(full_task_graph, parameters, graph_config):
|
|
86
86
|
"""Target the tasks which have indicated they should be run on this project
|
|
87
87
|
via the `run_on_projects` attributes."""
|
|
@@ -90,7 +90,7 @@ def target_tasks_default(full_task_graph, parameters, graph_config):
|
|
|
90
90
|
]
|
|
91
91
|
|
|
92
92
|
|
|
93
|
-
@
|
|
93
|
+
@register_target_task("codereview")
|
|
94
94
|
def target_tasks_codereview(full_task_graph, parameters, graph_config):
|
|
95
95
|
"""Target the tasks which have indicated they should be run on this project
|
|
96
96
|
via the `run_on_projects` attributes."""
|
|
@@ -101,7 +101,7 @@ def target_tasks_codereview(full_task_graph, parameters, graph_config):
|
|
|
101
101
|
]
|
|
102
102
|
|
|
103
103
|
|
|
104
|
-
@
|
|
104
|
+
@register_target_task("nothing")
|
|
105
105
|
def target_tasks_nothing(full_task_graph, parameters, graph_config):
|
|
106
106
|
"""Select nothing, for DONTBUILD pushes"""
|
|
107
107
|
return []
|
{taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/base.py
RENAMED
|
@@ -147,7 +147,7 @@ class ValidateSchema:
|
|
|
147
147
|
kind=config.kind, name=task["name"]
|
|
148
148
|
)
|
|
149
149
|
elif "label" in task:
|
|
150
|
-
error = "In
|
|
150
|
+
error = "In task {label!r}:".format(label=task["label"])
|
|
151
151
|
elif "primary-dependency" in task:
|
|
152
152
|
error = "In {kind} kind task for {dependency!r}:".format(
|
|
153
153
|
kind=config.kind, dependency=task["primary-dependency"].label
|
{taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/code_review.py
RENAMED
|
@@ -12,12 +12,12 @@ transforms = TransformSequence()
|
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
@transforms.add
|
|
15
|
-
def add_dependencies(config,
|
|
16
|
-
for
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
def add_dependencies(config, tasks):
|
|
16
|
+
for task in tasks:
|
|
17
|
+
task.setdefault("soft-dependencies", [])
|
|
18
|
+
task["soft-dependencies"] += [
|
|
19
19
|
dep_task.label
|
|
20
20
|
for dep_task in config.kind_dependencies_tasks.values()
|
|
21
21
|
if dep_task.attributes.get("code-review") is True
|
|
22
22
|
]
|
|
23
|
-
yield
|
|
23
|
+
yield task
|
{taskcluster-taskgraph-6.3.1 → taskcluster-taskgraph-7.0.0}/src/taskgraph/transforms/fetch.py
RENAMED
|
@@ -35,8 +35,8 @@ FETCH_SCHEMA = Schema(
|
|
|
35
35
|
Optional("docker-image"): object,
|
|
36
36
|
Optional(
|
|
37
37
|
"fetch-alias",
|
|
38
|
-
description="An alias that can be used instead of the real fetch
|
|
39
|
-
"fetch stanzas for
|
|
38
|
+
description="An alias that can be used instead of the real fetch task name in "
|
|
39
|
+
"fetch stanzas for tasks.",
|
|
40
40
|
): str,
|
|
41
41
|
Optional(
|
|
42
42
|
"artifact-prefix",
|
|
@@ -78,20 +78,20 @@ transforms.add_validate(FETCH_SCHEMA)
|
|
|
78
78
|
|
|
79
79
|
|
|
80
80
|
@transforms.add
|
|
81
|
-
def
|
|
82
|
-
# Converts fetch-url entries to the
|
|
83
|
-
for
|
|
84
|
-
typ =
|
|
85
|
-
name =
|
|
86
|
-
fetch =
|
|
81
|
+
def process_fetch_task(config, tasks):
|
|
82
|
+
# Converts fetch-url entries to the run schema.
|
|
83
|
+
for task in tasks:
|
|
84
|
+
typ = task["fetch"]["type"]
|
|
85
|
+
name = task["name"]
|
|
86
|
+
fetch = task.pop("fetch")
|
|
87
87
|
|
|
88
88
|
if typ not in fetch_builders:
|
|
89
89
|
raise Exception(f"Unknown fetch type {typ} in fetch {name}")
|
|
90
90
|
validate_schema(fetch_builders[typ].schema, fetch, f"In task.fetch {name!r}:")
|
|
91
91
|
|
|
92
|
-
|
|
92
|
+
task.update(configure_fetch(config, typ, name, fetch))
|
|
93
93
|
|
|
94
|
-
yield
|
|
94
|
+
yield task
|
|
95
95
|
|
|
96
96
|
|
|
97
97
|
def configure_fetch(config, typ, name, fetch):
|
|
@@ -103,7 +103,7 @@ def configure_fetch(config, typ, name, fetch):
|
|
|
103
103
|
|
|
104
104
|
|
|
105
105
|
@transforms.add
|
|
106
|
-
def make_task(config,
|
|
106
|
+
def make_task(config, tasks):
|
|
107
107
|
# Fetch tasks are idempotent and immutable. Have them live for
|
|
108
108
|
# essentially forever.
|
|
109
109
|
if config.params["level"] == "3":
|
|
@@ -111,33 +111,33 @@ def make_task(config, jobs):
|
|
|
111
111
|
else:
|
|
112
112
|
expires = "28 days"
|
|
113
113
|
|
|
114
|
-
for
|
|
115
|
-
name =
|
|
116
|
-
artifact_prefix =
|
|
117
|
-
env =
|
|
114
|
+
for task in tasks:
|
|
115
|
+
name = task["name"]
|
|
116
|
+
artifact_prefix = task.get("artifact-prefix", "public")
|
|
117
|
+
env = task.get("env", {})
|
|
118
118
|
env.update({"UPLOAD_DIR": "/builds/worker/artifacts"})
|
|
119
|
-
attributes =
|
|
120
|
-
attributes["fetch-artifact"] = path.join(artifact_prefix,
|
|
121
|
-
alias =
|
|
119
|
+
attributes = task.get("attributes", {})
|
|
120
|
+
attributes["fetch-artifact"] = path.join(artifact_prefix, task["artifact_name"])
|
|
121
|
+
alias = task.get("fetch-alias")
|
|
122
122
|
if alias:
|
|
123
123
|
attributes["fetch-alias"] = alias
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
task_desc = {
|
|
126
126
|
"attributes": attributes,
|
|
127
127
|
"name": name,
|
|
128
|
-
"description":
|
|
128
|
+
"description": task["description"],
|
|
129
129
|
"expires-after": expires,
|
|
130
130
|
"label": "fetch-%s" % name,
|
|
131
131
|
"run-on-projects": [],
|
|
132
132
|
"run": {
|
|
133
133
|
"using": "run-task",
|
|
134
134
|
"checkout": False,
|
|
135
|
-
"command":
|
|
135
|
+
"command": task["command"],
|
|
136
136
|
},
|
|
137
137
|
"worker-type": "images",
|
|
138
138
|
"worker": {
|
|
139
139
|
"chain-of-trust": True,
|
|
140
|
-
"docker-image":
|
|
140
|
+
"docker-image": task.get("docker-image", {"in-tree": "fetch"}),
|
|
141
141
|
"env": env,
|
|
142
142
|
"max-run-time": 900,
|
|
143
143
|
"artifacts": [
|
|
@@ -151,29 +151,29 @@ def make_task(config, jobs):
|
|
|
151
151
|
}
|
|
152
152
|
|
|
153
153
|
if "treeherder" in config.graph_config:
|
|
154
|
-
|
|
154
|
+
task_desc["treeherder"] = {
|
|
155
155
|
"symbol": join_symbol("Fetch", name),
|
|
156
156
|
"kind": "build",
|
|
157
157
|
"platform": "fetch/opt",
|
|
158
158
|
"tier": 1,
|
|
159
159
|
}
|
|
160
160
|
|
|
161
|
-
if
|
|
162
|
-
|
|
163
|
-
|
|
161
|
+
if task.get("secret", None):
|
|
162
|
+
task_desc["scopes"] = ["secrets:get:" + task.get("secret")]
|
|
163
|
+
task_desc["worker"]["taskcluster-proxy"] = True
|
|
164
164
|
|
|
165
165
|
if not taskgraph.fast:
|
|
166
|
-
cache_name =
|
|
166
|
+
cache_name = task_desc["label"].replace(f"{config.kind}-", "", 1)
|
|
167
167
|
|
|
168
168
|
# This adds the level to the index path automatically.
|
|
169
169
|
add_optimization(
|
|
170
170
|
config,
|
|
171
|
-
|
|
171
|
+
task_desc,
|
|
172
172
|
cache_type=CACHE_TYPE,
|
|
173
173
|
cache_name=cache_name,
|
|
174
|
-
digest_data=
|
|
174
|
+
digest_data=task["digest_data"],
|
|
175
175
|
)
|
|
176
|
-
yield
|
|
176
|
+
yield task_desc
|
|
177
177
|
|
|
178
178
|
|
|
179
179
|
@fetch_builder(
|