taskcluster-taskgraph 23.2.0__tar.gz → 24.1.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-23.2.0 → taskcluster_taskgraph-24.1.0}/.github/workflows/codeql-analysis.yml +4 -4
- taskcluster_taskgraph-24.1.0/.github/workflows/codspeed.yml +31 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.github/workflows/pypi-publish.yml +15 -9
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.gitignore +1 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/CHANGELOG.md +17 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/PKG-INFO +5 -1
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/README.rst +4 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/migrations.rst +11 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/transforms/task_context.rst +81 -30
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py +0 -3
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/pyproject.toml +2 -1
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/decision.py +37 -42
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/parameters.py +0 -7
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/docker_image.py +1 -1
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/task.py +3 -5
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/task_context.py +16 -0
- taskcluster_taskgraph-24.1.0/src/taskgraph/util/task_context.py +20 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/index-task/yarn.lock +3 -3
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/task_context.yml +1 -0
- taskcluster_taskgraph-24.1.0/test/test_graph_perf.py +218 -0
- taskcluster_taskgraph-24.1.0/test/test_transform_task_context.py +348 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/uv.lock +222 -35
- taskcluster_taskgraph-23.2.0/test/test_transform_task_context.py +0 -222
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.codespell-ignore-words.txt +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.github/CODEOWNERS +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.pre-commit-config.yaml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.readthedocs.yaml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.taskcluster.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.yamllint +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/CODE_OF_CONDUCT.md +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/CONTRIBUTING.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/LICENSE +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/Makefile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/index.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/kind.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/loading.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/optimization.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/overview.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/scopes.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/task-graphs.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/concepts/transforms.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/conf.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/contributing.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/glossary.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/bootstrap-taskgraph.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/create-actions.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/create-tasks.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/debugging.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/define-schemas.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/docker.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/index.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/load-task-locally.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/resolve-keyed-by.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/run-locally.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/send-notifications.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/howto/use-fetches.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/index.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/cli.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/index.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/optimization-strategies.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/parameters.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/modules.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.actions.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.loader.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.optimize.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.transforms.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.transforms.run.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/source/taskgraph.util.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/transforms/chunking.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/transforms/from_deps.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/transforms/index.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/reference/transforms/matrix.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/tutorials/connecting-taskcluster.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/tutorials/creating-a-task-graph.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/tutorials/example-taskcluster.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/tutorials/getting-started.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/docs/tutorials/index.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/make.bat +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/pytest-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/pytest-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/pytest-taskgraph/src/pytest_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/vcs.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/sphinx-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/sphinx-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/packages/sphinx-taskgraph/src/sphinx_taskgraph/autoschema.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/renovate.json +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/cancel.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/cancel_all.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/registry.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/retrigger.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/actions/util.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/config.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/create.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/docker.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/filter_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/generator.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/graph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/loader/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/loader/default.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/loader/transform.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/main.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/morph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/optimize/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/optimize/base.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/optimize/strategies.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/run-task/fetch-content +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/run-task/hgrc +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/run-task/run-task +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/target_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/task.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/taskgraph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/base.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/chunking.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/code_review.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/fetch.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/from_deps.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/matrix.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/notify.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/run/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/run/common.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/run/index_search.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/run/run_task.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/run/toolchain.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/archive.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/attributes.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/cached_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/caches.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/copy.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/dependencies.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/docker.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/hash.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/json.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/keyed_by.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/parameterization.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/path.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/python_path.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/readonlydict.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/schema.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/set_name.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/shell.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/taskcluster.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/taskgraph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/templates.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/time.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/treeherder.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/vcs.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/verify.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/workertypes.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/util/yaml.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/REGISTRY +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/decision/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/decision/HASH +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/decision/README.md +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/decision/VERSION +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/decision/system-setup.sh +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/fetch/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/image_builder/README.rst +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/index-task/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/index-task/README +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/index-task/insert-indexes.js +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/index-task/package.json +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/python/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/run-task/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/run-task/system-setup.sh +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/skopeo/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/skopeo/policy.json +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/docker/skopeo/push_image.sh +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/check/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/codecov/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/complete/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/doc/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/fetch/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/push-image/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/test/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/test/linux.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/kinds/test/windows.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/scripts/codecov-upload.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/self_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/self_taskgraph/custom_parameters.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/self_taskgraph/custom_target_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/self_taskgraph/transforms/add_pr_route.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/self_taskgraph/transforms/push_image.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/test/params/main-repo-pull-request-untrusted.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/test/params/main-repo-pull-request.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/test/params/main-repo-push.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/test/params/main-repo-release-pytest-taskgraph.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/taskcluster/test/params/main-repo-release-taskcluster-taskgraph.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/cookiecutter.json +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/hooks/post_gen_project.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/{{cookiecutter.project_name}}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/{{cookiecutter.project_name}}/taskcluster/docker/linux/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/hello/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/{{cookiecutter.project_name}}/taskcluster/{{cookiecutter.project_slug}}_taskgraph/transforms/hello.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/template/{{cookiecutter.project_name}}/taskcluster.github.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/__init__.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/automationrelevance.json +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/conftest.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/docker/hello-world/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/docker/hello-world-tag/Dockerfile +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/docker/hello-world-tag/REGISTRY +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/docker/hello-world-tag/VERSION +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/scripts/toolchain/run.ps1 +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/scripts/toolchain/run.sh +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/taskcluster/test_taskgraph/transforms/foo.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/data/testmod/thing.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/mockedopen.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_actions_registry.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_config.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_create.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_decision.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_docker.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_generator.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_graph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_main.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_morph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_optimize.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_optimize_strategies.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_parameters.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_scripts_fetch_content.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_scripts_run_task.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_target_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_taskgraph.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transform_chunking.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transform_docker_image.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_base.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_cached_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_fetch.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_from_deps.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_matrix.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_notify.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_run.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_run_run_task.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_run_toolchain.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_transforms_task.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_archive.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_attributes.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_cached_tasks.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_copy.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_dependencies.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_docker.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_json.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_keyed_by.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_parameterization.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_path.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_python_path.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_readonlydict.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_schema.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_taskcluster.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_templates.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_time.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_treeherder.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_vcs.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_verify.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_workertypes.py +0 -0
- {taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/test/test_util_yaml.py +0 -0
{taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.github/workflows/codeql-analysis.yml
RENAMED
|
@@ -39,10 +39,10 @@ jobs:
|
|
|
39
39
|
|
|
40
40
|
steps:
|
|
41
41
|
- name: Checkout repository
|
|
42
|
-
uses: actions/checkout@
|
|
42
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
43
43
|
# Initializes the CodeQL tools for scanning.
|
|
44
44
|
- name: Initialize CodeQL
|
|
45
|
-
uses: github/codeql-action/init@
|
|
45
|
+
uses: github/codeql-action/init@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
|
|
46
46
|
with:
|
|
47
47
|
languages: ${{ matrix.language }}
|
|
48
48
|
# If you wish to specify custom queries, you can do so here or in a config file.
|
|
@@ -55,7 +55,7 @@ jobs:
|
|
|
55
55
|
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
|
|
56
56
|
# If this step fails, then you should remove it and run the build manually (see below)
|
|
57
57
|
- name: Autobuild
|
|
58
|
-
uses: github/codeql-action/autobuild@
|
|
58
|
+
uses: github/codeql-action/autobuild@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
|
|
59
59
|
|
|
60
60
|
# ℹ️ Command-line programs to run using the OS shell.
|
|
61
61
|
# 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun
|
|
@@ -67,4 +67,4 @@ jobs:
|
|
|
67
67
|
# echo "Run, Build Application using script"
|
|
68
68
|
# ./location_of_script_within_repo/buildscript.sh
|
|
69
69
|
- name: Perform CodeQL Analysis
|
|
70
|
-
uses: github/codeql-action/analyze@
|
|
70
|
+
uses: github/codeql-action/analyze@8aad20d150bbac5944a9f9d289da16a4b0d87c1e # v4.36.2
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: CodSpeed
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
push:
|
|
6
|
+
branches:
|
|
7
|
+
- main
|
|
8
|
+
pull_request:
|
|
9
|
+
# `workflow_dispatch` allows CodSpeed to trigger backtest
|
|
10
|
+
# performance analysis in order to generate initial data.
|
|
11
|
+
workflow_dispatch:
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
benchmarks:
|
|
15
|
+
name: Run benchmarks
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read # required for actions/checkout
|
|
19
|
+
id-token: write # required for OIDC authentication with CodSpeed
|
|
20
|
+
steps:
|
|
21
|
+
- uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
22
|
+
- uses: astral-sh/setup-uv@fac544c07dec837d0ccb6301d7b5580bf5edae39 # v8.2.0
|
|
23
|
+
with:
|
|
24
|
+
python-version: "3.12"
|
|
25
|
+
- name: Install dependencies
|
|
26
|
+
run: uv sync
|
|
27
|
+
- name: Run benchmarks
|
|
28
|
+
uses: CodSpeedHQ/action@9d332c4d90b43981c3e55ae8e38e68709996240f # v4.17.0
|
|
29
|
+
with:
|
|
30
|
+
mode: simulation
|
|
31
|
+
run: uv run pytest test/ --codspeed
|
{taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/.github/workflows/pypi-publish.yml
RENAMED
|
@@ -12,8 +12,8 @@ jobs:
|
|
|
12
12
|
id-token: write
|
|
13
13
|
steps:
|
|
14
14
|
- name: Checkout sources
|
|
15
|
-
uses: actions/checkout@
|
|
16
|
-
- uses: actions/setup-python@
|
|
15
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
16
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
17
17
|
with:
|
|
18
18
|
python-version: '3.11'
|
|
19
19
|
cache: 'pip'
|
|
@@ -21,8 +21,14 @@ jobs:
|
|
|
21
21
|
run: |
|
|
22
22
|
pip install build
|
|
23
23
|
python -m build
|
|
24
|
+
# NOTE: We deliberately pin this action to a commit SHA rather than the
|
|
25
|
+
# mutable `@release/v1` ref that PyPA recommends. The pin stops the
|
|
26
|
+
# action from being swapped out from under a workflow that holds PyPI
|
|
27
|
+
# publish (OIDC) rights; the cost is losing automatic upstream patches.
|
|
28
|
+
# Renovate offsets that by bumping the pinned SHA (tracked via the
|
|
29
|
+
# trailing `# vX.Y.Z` comment), so merge those bump PRs promptly.
|
|
24
30
|
- name: Publish package distributions to PyPI
|
|
25
|
-
uses: pypa/gh-action-pypi-publish@
|
|
31
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
26
32
|
pypi-publish-pytest-taskgraph:
|
|
27
33
|
name: upload release to PyPI
|
|
28
34
|
if: startsWith(github.ref, 'refs/tags/pytest-taskgraph')
|
|
@@ -32,8 +38,8 @@ jobs:
|
|
|
32
38
|
id-token: write
|
|
33
39
|
steps:
|
|
34
40
|
- name: Checkout sources
|
|
35
|
-
uses: actions/checkout@
|
|
36
|
-
- uses: actions/setup-python@
|
|
41
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
42
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
37
43
|
with:
|
|
38
44
|
python-version: '3.11'
|
|
39
45
|
cache: 'pip'
|
|
@@ -43,7 +49,7 @@ jobs:
|
|
|
43
49
|
pip install build
|
|
44
50
|
python -m build
|
|
45
51
|
- name: Publish package distributions to PyPI
|
|
46
|
-
uses: pypa/gh-action-pypi-publish@
|
|
52
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
47
53
|
with:
|
|
48
54
|
packages-dir: packages/pytest-taskgraph/dist
|
|
49
55
|
pypi-publish-sphinx-taskgraph:
|
|
@@ -55,8 +61,8 @@ jobs:
|
|
|
55
61
|
id-token: write
|
|
56
62
|
steps:
|
|
57
63
|
- name: Checkout sources
|
|
58
|
-
uses: actions/checkout@
|
|
59
|
-
- uses: actions/setup-python@
|
|
64
|
+
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
|
65
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6.2.0
|
|
60
66
|
with:
|
|
61
67
|
python-version: '3.11'
|
|
62
68
|
cache: 'pip'
|
|
@@ -66,6 +72,6 @@ jobs:
|
|
|
66
72
|
pip install build
|
|
67
73
|
python -m build
|
|
68
74
|
- name: Publish package distributions to PyPI
|
|
69
|
-
uses: pypa/gh-action-pypi-publish@
|
|
75
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
70
76
|
with:
|
|
71
77
|
packages-dir: packages/sphinx-taskgraph/dist
|
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## [24.1.0] - 2026-06-04
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- support for custom context in task-context (#971)
|
|
8
|
+
|
|
9
|
+
## [24.0.0] - 2026-06-03
|
|
10
|
+
|
|
11
|
+
### Changed
|
|
12
|
+
|
|
13
|
+
- BREAKING CHANGE: Must pass in `--allow-parameter-override` if using try_task_config
|
|
14
|
+
- BREAKING CHANGE: Default level 1 artifact expiry changed from 1 year to 28 days
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- BREAKING CHANGE: Removed `Parameters.is_try()` helper method
|
|
19
|
+
|
|
3
20
|
## [23.2.0] - 2026-06-03
|
|
4
21
|
|
|
5
22
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version:
|
|
3
|
+
Version: 24.1.0
|
|
4
4
|
Summary: Build taskcluster taskgraphs
|
|
5
5
|
Project-URL: Repository, https://github.com/taskcluster/taskgraph
|
|
6
6
|
Project-URL: Issues, https://github.com/taskcluster/taskgraph/issues
|
|
@@ -44,6 +44,10 @@ Description-Content-Type: text/x-rst
|
|
|
44
44
|
:target: https://codecov.io/gh/taskcluster/taskgraph
|
|
45
45
|
:alt: Code Coverage
|
|
46
46
|
|
|
47
|
+
.. image:: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json
|
|
48
|
+
:target: https://codspeed.io/taskcluster/taskgraph?utm_source=badge
|
|
49
|
+
:alt: CodSpeed Performance
|
|
50
|
+
|
|
47
51
|
.. image:: https://badge.fury.io/py/taskcluster-taskgraph.svg
|
|
48
52
|
:target: https://badge.fury.io/py/taskcluster-taskgraph
|
|
49
53
|
:alt: Pypi Version
|
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
:target: https://codecov.io/gh/taskcluster/taskgraph
|
|
8
8
|
:alt: Code Coverage
|
|
9
9
|
|
|
10
|
+
.. image:: https://img.shields.io/endpoint?url=https://codspeed.io/badge.json
|
|
11
|
+
:target: https://codspeed.io/taskcluster/taskgraph?utm_source=badge
|
|
12
|
+
:alt: CodSpeed Performance
|
|
13
|
+
|
|
10
14
|
.. image:: https://badge.fury.io/py/taskcluster-taskgraph.svg
|
|
11
15
|
:target: https://badge.fury.io/py/taskcluster-taskgraph
|
|
12
16
|
:alt: Pypi Version
|
|
@@ -3,6 +3,17 @@ Migration Guide
|
|
|
3
3
|
|
|
4
4
|
This page can help when migrating Taskgraph across major versions.
|
|
5
5
|
|
|
6
|
+
23.x -> 24.x
|
|
7
|
+
------------
|
|
8
|
+
|
|
9
|
+
* You must now pass in `--allow-parameter-override` into Decision tasks that
|
|
10
|
+
need to load the `try_task_config.json` file at the root of the repo.
|
|
11
|
+
* `taskgraph.parameters.Parameters.is_try()` is removed. Either in-line the old
|
|
12
|
+
method to a utility or use alternative logic.
|
|
13
|
+
* Level 1 artifacts' default expiry changed from "1 year" to "28 days". If
|
|
14
|
+
needed, set `task-expires-after` in `taskcluster/config.yml` to adjust the
|
|
15
|
+
default back.
|
|
16
|
+
|
|
6
17
|
22.x -> 23.x
|
|
7
18
|
------------
|
|
8
19
|
|
|
@@ -98,35 +98,6 @@ with the this ``kind``:
|
|
|
98
98
|
...the description will bring in the value ``foo`` from the parameters if
|
|
99
99
|
present, or ``default`` otherwise.
|
|
100
100
|
|
|
101
|
-
from-file
|
|
102
|
-
~~~~~~~~~
|
|
103
|
-
|
|
104
|
-
Context may also be provided from a defined yaml file. The provided file
|
|
105
|
-
should usually only contain top level keys and values (eg: nested objects
|
|
106
|
-
will not be interpolated - they will be substituted as text representations
|
|
107
|
-
of the object).
|
|
108
|
-
|
|
109
|
-
For example, with this kind definition:
|
|
110
|
-
|
|
111
|
-
.. code-block:: yaml
|
|
112
|
-
|
|
113
|
-
tasks:
|
|
114
|
-
build:
|
|
115
|
-
description: my description {foo}
|
|
116
|
-
task-context:
|
|
117
|
-
from-file: some_file.yaml
|
|
118
|
-
substitution-fields:
|
|
119
|
-
- description
|
|
120
|
-
|
|
121
|
-
And this in ``some_file.yaml``:
|
|
122
|
-
|
|
123
|
-
.. code-block:: yaml
|
|
124
|
-
|
|
125
|
-
foo: from a file
|
|
126
|
-
|
|
127
|
-
...description will end up with "my description from a file".
|
|
128
|
-
|
|
129
|
-
|
|
130
101
|
from-object
|
|
131
102
|
~~~~~~~~~~~
|
|
132
103
|
|
|
@@ -158,6 +129,86 @@ For example:
|
|
|
158
129
|
This will give build1 and build2 descriptions with their ``extra_desc``
|
|
159
130
|
included while allowing them to share the rest of their task definition.
|
|
160
131
|
|
|
132
|
+
from-custom
|
|
133
|
+
~~~~~~~~~~~
|
|
134
|
+
|
|
135
|
+
Context may be provided by custom providers, which must be registered prior
|
|
136
|
+
to this transform being run. This allows the creation of context that is
|
|
137
|
+
derived from parameters, code constants, or anything else accessible to
|
|
138
|
+
taskgraph.
|
|
139
|
+
|
|
140
|
+
For example, you may have a custom context handler set-up in
|
|
141
|
+
``taskcluster/my_taskgraph/custom_context.py``:
|
|
142
|
+
|
|
143
|
+
.. code-block:: python
|
|
144
|
+
|
|
145
|
+
NON_PRODUCTION_BRANCHES = ["maple", "pine"]
|
|
146
|
+
|
|
147
|
+
@custom_context("release-level")
|
|
148
|
+
def release_level_context(config, task):
|
|
149
|
+
# Despite being level 3, some branches are not truly considered "production"
|
|
150
|
+
# in the sense of creating releases that ship to users.
|
|
151
|
+
if config.params["level"] == "1" or config.params["project"] in NON_PRODUCTION_BRANCHES:
|
|
152
|
+
return "staging"
|
|
153
|
+
return "production"
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
In your ``register`` function you will need to ensure you import this module.
|
|
157
|
+
Eg: ``taskcluster/my_taskgraph/__init__.py``:
|
|
158
|
+
|
|
159
|
+
.. code-block:: python
|
|
160
|
+
|
|
161
|
+
def register(graph_config):
|
|
162
|
+
from my_taskgraph import custom_contexts # trigger custom task-context registration
|
|
163
|
+
|
|
164
|
+
|
|
165
|
+
Now you can use ``release-level`` as context in a kind:
|
|
166
|
+
|
|
167
|
+
.. code-block:: yaml
|
|
168
|
+
|
|
169
|
+
task-defaults:
|
|
170
|
+
task-context:
|
|
171
|
+
from-custom:
|
|
172
|
+
- release-level
|
|
173
|
+
substitution-fields:
|
|
174
|
+
- scopes
|
|
175
|
+
|
|
176
|
+
scopes:
|
|
177
|
+
by-release-level:
|
|
178
|
+
staging:
|
|
179
|
+
- secrets:get:staging_creds
|
|
180
|
+
production:
|
|
181
|
+
- secrets:get:production_creds
|
|
182
|
+
|
|
183
|
+
|
|
184
|
+
from-file
|
|
185
|
+
~~~~~~~~~
|
|
186
|
+
|
|
187
|
+
Context may also be provided from a defined yaml file. The provided file
|
|
188
|
+
should usually only contain top level keys and values (eg: nested objects
|
|
189
|
+
will not be interpolated - they will be substituted as text representations
|
|
190
|
+
of the object).
|
|
191
|
+
|
|
192
|
+
For example, with this kind definition:
|
|
193
|
+
|
|
194
|
+
.. code-block:: yaml
|
|
195
|
+
|
|
196
|
+
tasks:
|
|
197
|
+
build:
|
|
198
|
+
description: my description {foo}
|
|
199
|
+
task-context:
|
|
200
|
+
from-file: some_file.yaml
|
|
201
|
+
substitution-fields:
|
|
202
|
+
- description
|
|
203
|
+
|
|
204
|
+
And this in ``some_file.yaml``:
|
|
205
|
+
|
|
206
|
+
.. code-block:: yaml
|
|
207
|
+
|
|
208
|
+
foo: from a file
|
|
209
|
+
|
|
210
|
+
...description will end up with "my description from a file".
|
|
211
|
+
|
|
161
212
|
Implicit Context
|
|
162
213
|
~~~~~~~~~~~~~~~~
|
|
163
214
|
|
|
@@ -185,7 +236,7 @@ Keys will be resolved on ``substitution-fields`` first, then substitution
|
|
|
185
236
|
will be performed on the resolved value.
|
|
186
237
|
|
|
187
238
|
If the same key is found in multiple places the order of precedence is as
|
|
188
|
-
follows: ``from-parameters``, ``from-object`` keys, ``from-file`` and finally
|
|
239
|
+
follows: ``from-parameters``, ``from-object`` keys, ``from-custom`` providers, ``from-file`` and finally
|
|
189
240
|
implicit context.
|
|
190
241
|
|
|
191
242
|
That is to say: parameters will always override anything else.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
### Project
|
|
2
2
|
[project]
|
|
3
3
|
name = "taskcluster-taskgraph"
|
|
4
|
-
version = "
|
|
4
|
+
version = "24.1.0"
|
|
5
5
|
description = "Build taskcluster taskgraphs"
|
|
6
6
|
readme = "README.rst"
|
|
7
7
|
authors = [
|
|
@@ -42,6 +42,7 @@ dev = [
|
|
|
42
42
|
"pre-commit>=4.3.0",
|
|
43
43
|
"pyright>=1.1.406",
|
|
44
44
|
"pytest>=8.4.2",
|
|
45
|
+
"pytest-codspeed>=3.2.0",
|
|
45
46
|
"pytest-mock>=3.15.1",
|
|
46
47
|
"pytest-taskgraph>=0.2.0",
|
|
47
48
|
"responses>=0.25.8",
|
|
@@ -252,31 +252,27 @@ def get_decision_parameters(graph_config, options):
|
|
|
252
252
|
assert callable(decision_params)
|
|
253
253
|
decision_params(graph_config, parameters)
|
|
254
254
|
|
|
255
|
-
if
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
f"
|
|
276
|
-
)
|
|
277
|
-
parameters.update(note_params)
|
|
278
|
-
except ValueError as e:
|
|
279
|
-
raise Exception(f"Failed to parse {note_ref} as JSON: {e}") from e
|
|
255
|
+
# load extra parameters from file or vcs note if able
|
|
256
|
+
if options.get("allow_parameter_override"):
|
|
257
|
+
note_ref = "refs/notes/decision-parameters"
|
|
258
|
+
if options.get("try_task_config_file"):
|
|
259
|
+
task_config_file = os.path.abspath(options.get("try_task_config_file"))
|
|
260
|
+
else:
|
|
261
|
+
# if try_task_config.json is present, load it
|
|
262
|
+
task_config_file = os.path.join(os.getcwd(), "try_task_config.json")
|
|
263
|
+
|
|
264
|
+
if os.path.isfile(task_config_file):
|
|
265
|
+
set_try_config(parameters, task_config_file)
|
|
266
|
+
|
|
267
|
+
elif note_params := repo.get_note(note_ref, parameters["head_repository"]):
|
|
268
|
+
try:
|
|
269
|
+
note_params = json.loads(note_params)
|
|
270
|
+
logger.info(
|
|
271
|
+
f"Overriding parameters from {note_ref}:\n{json.dumps(note_params, indent=2)}"
|
|
272
|
+
)
|
|
273
|
+
parameters.update(note_params)
|
|
274
|
+
except ValueError as e:
|
|
275
|
+
raise Exception(f"Failed to parse {note_ref} as JSON: {e}") from e
|
|
280
276
|
|
|
281
277
|
result = Parameters(**parameters)
|
|
282
278
|
result.check()
|
|
@@ -284,23 +280,22 @@ def get_decision_parameters(graph_config, options):
|
|
|
284
280
|
|
|
285
281
|
|
|
286
282
|
def set_try_config(parameters, task_config_file):
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
)
|
|
283
|
+
logger.info(f"using try tasks from {task_config_file}")
|
|
284
|
+
with open(task_config_file) as fh:
|
|
285
|
+
task_config = json.load(fh)
|
|
286
|
+
task_config_version = task_config.pop("version")
|
|
287
|
+
if task_config_version == 2:
|
|
288
|
+
validate_schema(
|
|
289
|
+
try_task_config_schema_v2,
|
|
290
|
+
task_config,
|
|
291
|
+
"Invalid v2 `try_task_config.json`.",
|
|
292
|
+
)
|
|
293
|
+
parameters.update(task_config["parameters"])
|
|
294
|
+
return
|
|
295
|
+
else:
|
|
296
|
+
raise Exception(
|
|
297
|
+
f"Unknown `try_task_config.json` version: {task_config_version}"
|
|
298
|
+
)
|
|
304
299
|
|
|
305
300
|
|
|
306
301
|
def write_artifact(filename, data):
|
|
@@ -273,13 +273,6 @@ class Parameters(ReadOnlyDict):
|
|
|
273
273
|
except KeyError:
|
|
274
274
|
raise KeyError(f"taskgraph parameter {k!r} not found")
|
|
275
275
|
|
|
276
|
-
def is_try(self):
|
|
277
|
-
"""
|
|
278
|
-
Determine whether this graph is being built on a try project or for
|
|
279
|
-
`mach try fuzzy`.
|
|
280
|
-
"""
|
|
281
|
-
return "try" in self["project"] or self["tasks_for"] == "github-pull-request"
|
|
282
|
-
|
|
283
276
|
@property
|
|
284
277
|
def moz_build_date(self):
|
|
285
278
|
# XXX self["moz_build_date"] is left as a string because:
|
|
@@ -130,7 +130,7 @@ def fill_template(config, tasks):
|
|
|
130
130
|
"artifact_prefix": "public",
|
|
131
131
|
},
|
|
132
132
|
"always-target": True,
|
|
133
|
-
"expires-after": expires if config.params
|
|
133
|
+
"expires-after": expires if config.params["level"] == "1" else "1 year",
|
|
134
134
|
"scopes": [],
|
|
135
135
|
"run-on-projects": [],
|
|
136
136
|
"worker-type": "images",
|
{taskcluster_taskgraph-23.2.0 → taskcluster_taskgraph-24.1.0}/src/taskgraph/transforms/task.py
RENAMED
|
@@ -457,12 +457,10 @@ def build_docker_worker_payload(config, task, task_def):
|
|
|
457
457
|
else:
|
|
458
458
|
suffix = cache_version
|
|
459
459
|
|
|
460
|
-
skip_untrusted = config.params.is_try() or level == 1
|
|
461
|
-
|
|
462
460
|
for cache in worker["caches"]:
|
|
463
461
|
# Some caches aren't enabled in environments where we can't
|
|
464
462
|
# guarantee certain behavior. Filter those out.
|
|
465
|
-
if cache.get("skip-untrusted") and
|
|
463
|
+
if cache.get("skip-untrusted") and level == 1:
|
|
466
464
|
continue
|
|
467
465
|
|
|
468
466
|
name = "{trust_domain}-level-{level}-{name}-{suffix}".format(
|
|
@@ -484,7 +482,7 @@ def build_docker_worker_payload(config, task, task_def):
|
|
|
484
482
|
if run_task and worker.get("volumes"):
|
|
485
483
|
payload["env"]["TASKCLUSTER_VOLUMES"] = ";".join(sorted(worker["volumes"]))
|
|
486
484
|
|
|
487
|
-
if payload.get("cache") and
|
|
485
|
+
if payload.get("cache") and level == 1: # type: ignore
|
|
488
486
|
payload["env"]["TASKCLUSTER_UNTRUSTED_CACHES"] = "1"
|
|
489
487
|
|
|
490
488
|
if features:
|
|
@@ -999,7 +997,7 @@ def build_task(config, tasks):
|
|
|
999
997
|
if "expires-after" not in task:
|
|
1000
998
|
task["expires-after"] = (
|
|
1001
999
|
config.graph_config._config.get("task-expires-after", "28 days")
|
|
1002
|
-
if config.params
|
|
1000
|
+
if config.params["level"] == "1"
|
|
1003
1001
|
else "1 year"
|
|
1004
1002
|
)
|
|
1005
1003
|
|
|
@@ -2,6 +2,7 @@ from typing import Optional, Union
|
|
|
2
2
|
|
|
3
3
|
from taskgraph.transforms.base import TransformSequence
|
|
4
4
|
from taskgraph.util.schema import Schema, resolve_keyed_by
|
|
5
|
+
from taskgraph.util.task_context import CUSTOM_CONTEXT_MAP
|
|
5
6
|
from taskgraph.util.templates import deep_get, substitute_task_fields
|
|
6
7
|
from taskgraph.util.yaml import load_yaml
|
|
7
8
|
|
|
@@ -28,6 +29,12 @@ class TaskContextConfig(Schema):
|
|
|
28
29
|
from_file: Optional[str] = None
|
|
29
30
|
# Key/value pairs to be used as task context
|
|
30
31
|
from_object: Optional[object] = None
|
|
32
|
+
# Retrieve task context values from registered custom providers. Each
|
|
33
|
+
# entry is the name of a provider registered via
|
|
34
|
+
# ``taskgraph.util.task_context.custom_context``. Providers are called
|
|
35
|
+
# with the ``TransformConfig`` and the task being rendered, and must
|
|
36
|
+
# return a dict of key/value pairs to add to the context.
|
|
37
|
+
from_custom: Optional[list[str]] = None
|
|
31
38
|
resolve_keyed_by_options: Optional[ResolveKeyedByConfigOptions] = None
|
|
32
39
|
|
|
33
40
|
|
|
@@ -51,6 +58,7 @@ class TaskContextSchema(Schema, forbid_unknown_fields=False, kw_only=True):
|
|
|
51
58
|
# is as follows:
|
|
52
59
|
# - Parameters
|
|
53
60
|
# - `from-object` keys
|
|
61
|
+
# - Custom providers (`from-custom`)
|
|
54
62
|
# - File
|
|
55
63
|
#
|
|
56
64
|
# That is to say: parameters will always override anything else.
|
|
@@ -89,10 +97,18 @@ def render_task(config, tasks):
|
|
|
89
97
|
if from_file:
|
|
90
98
|
file_context = load_yaml(from_file)
|
|
91
99
|
|
|
100
|
+
custom_context = {}
|
|
101
|
+
for name in sub_config.pop("from-custom", None) or []:
|
|
102
|
+
if name not in CUSTOM_CONTEXT_MAP:
|
|
103
|
+
raise ValueError(f"no provider found for custom context '{name}'")
|
|
104
|
+
|
|
105
|
+
custom_context.update(CUSTOM_CONTEXT_MAP[name](config, task))
|
|
106
|
+
|
|
92
107
|
fields = sub_config.pop("substitution-fields")
|
|
93
108
|
|
|
94
109
|
subs = {}
|
|
95
110
|
subs.update(file_context)
|
|
111
|
+
subs.update(custom_context)
|
|
96
112
|
# We've popped away the configuration; everything left in `sub_config` is
|
|
97
113
|
# substitution key/value pairs.
|
|
98
114
|
subs.update(sub_config.pop("from-object", {}))
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
2
|
+
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
3
|
+
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
|
+
|
|
5
|
+
# Define a collection of custom task-context providers.
|
|
6
|
+
# Note: this is stored here instead of where it is used in the
|
|
7
|
+
# `task_context` transform to give consumers a chance to register their own
|
|
8
|
+
# providers before the `task_context` schema is created.
|
|
9
|
+
CUSTOM_CONTEXT_MAP = {}
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def custom_context(name):
|
|
13
|
+
def wrapper(func):
|
|
14
|
+
assert name not in CUSTOM_CONTEXT_MAP, (
|
|
15
|
+
f"duplicate custom_context function name {name} ({func} and {CUSTOM_CONTEXT_MAP[name]})"
|
|
16
|
+
)
|
|
17
|
+
CUSTOM_CONTEXT_MAP[name] = func
|
|
18
|
+
return func
|
|
19
|
+
|
|
20
|
+
return wrapper
|
|
@@ -63,9 +63,9 @@
|
|
|
63
63
|
"@types/node" "*"
|
|
64
64
|
|
|
65
65
|
"@types/node@*":
|
|
66
|
-
version "25.9.
|
|
67
|
-
resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.
|
|
68
|
-
integrity sha512-
|
|
66
|
+
version "25.9.2"
|
|
67
|
+
resolved "https://registry.yarnpkg.com/@types/node/-/node-25.9.2.tgz#fc8958e757994b71fee516f9634bdb03d1b19e9f"
|
|
68
|
+
integrity sha512-G05zqtJhcDLb8uslf5EjCxXg9G1KQxiV8OS0R26IC//Eoyitzqe8z37I7cqvnZlrlSfgocQRfSn/AHBZJJFyGw==
|
|
69
69
|
dependencies:
|
|
70
70
|
undici-types ">=7.24.0 <7.24.7"
|
|
71
71
|
|