taskcluster-taskgraph 14.2.0__tar.gz → 14.3.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-14.2.0 → taskcluster_taskgraph-14.3.0}/.pre-commit-config.yaml +3 -3
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/CHANGELOG.md +25 -7
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/PKG-INFO +3 -1
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/getting-started.rst +51 -56
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/pyproject.toml +2 -3
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/__init__.py +1 -1
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/registry.py +1 -2
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/create.py +2 -3
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/decision.py +2 -2
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/docker.py +4 -4
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/main.py +9 -7
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/morph.py +4 -5
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/parameters.py +1 -2
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/docker_image.py +1 -2
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/__init__.py +1 -1
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/common.py +1 -2
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/run_task.py +2 -13
- taskcluster_taskgraph-14.3.0/src/taskgraph/util/json.py +73 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/system-setup.sh +1 -1
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/check/kind.yml +1 -1
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_run_run_task.py +17 -7
- taskcluster_taskgraph-14.3.0/test/test_util_json.py +76 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/uv.lock +181 -1
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.codespell-ignore-words.txt +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/CODEOWNERS +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/codeql-analysis.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/pre-commit-autoupdate.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/pre-commit.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.github/workflows/pypi-publish.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.gitignore +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.hatch_build.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.readthedocs.yaml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.taskcluster.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/.yamllint +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/CODE_OF_CONDUCT.md +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/CONTRIBUTING.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/LICENSE +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/Makefile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/README.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/index.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/kind.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/loading.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/optimization.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/scopes.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/task-graphs.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/taskcluster.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/concepts/transforms.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/conf.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/contributing.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/glossary.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/bootstrap-taskgraph.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/create-actions.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/create-tasks.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/debugging.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/docker.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/index.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/run-locally.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/send-notifications.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/howto/use-fetches.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/index.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/cli.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/index.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/migrations.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/optimization-strategies.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/parameters.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/modules.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.actions.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.loader.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.optimize.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.transforms.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.transforms.run.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/source/taskgraph.util.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/chunking.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/from_deps.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/index.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/matrix.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/reference/transforms/task_context.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/connecting-taskcluster.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/creating-a-task-graph.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/example-taskcluster.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/index.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/make.bat +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/README.md +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/pyproject.toml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/gen.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/src/pytest_taskgraph/fixtures/vcs.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/packages/pytest-taskgraph/uv.lock +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/add_new_jobs.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/cancel.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/cancel_all.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/retrigger.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/util.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/config.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/filter_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/generator.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/graph.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/loader/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/loader/default.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/loader/transform.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/optimize/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/optimize/base.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/optimize/strategies.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/fetch-content +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/hgrc +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/robustcheckout.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/run-task/run-task +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/target_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/task.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/taskgraph.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/base.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/cached_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/chunking.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/code_review.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/fetch.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/from_deps.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/matrix.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/notify.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/index_search.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/toolchain.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/task.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/task_context.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/archive.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/attributes.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/cached_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/caches.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/copy.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/dependencies.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/docker.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/hash.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/keyed_by.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/parameterization.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/path.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/python_path.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/readonlydict.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/schema.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/set_name.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/shell.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/taskcluster.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/taskgraph.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/templates.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/time.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/treeherder.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/vcs.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/verify.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/workertypes.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/util/yaml.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/REGISTRY +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/HASH +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/README.md +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/decision/VERSION +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/fetch/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/image_builder/README.rst +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/README +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/insert-indexes.js +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/package.json +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/index-task/yarn.lock +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/python/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/run-task/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/run-task/system-setup.sh +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/skopeo/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/skopeo/policy.json +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/docker/skopeo/push_image.sh +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/codecov/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/complete/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/doc/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/fetch/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/push-image/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/kinds/test/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/scripts/codecov-upload.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/scripts/external_tools/tooltool.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/custom_parameters.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/custom_target_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/self_taskgraph/transforms/push_image.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-pull-request-untrusted.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-pull-request.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-push.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-release-pytest-taskgraph.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/taskcluster/test/params/main-repo-release-taskcluster-taskgraph.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/cookiecutter.json +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/hooks/post_gen_project.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/docker/linux/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/docker-image/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/kinds/hello/kind.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster/{{cookiecutter.project_slug}}_taskgraph/transforms/hello.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/template/{{cookiecutter.project_name}}/taskcluster.github.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/__init__.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/automationrelevance.json +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/conftest.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/task_context.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/config.yml +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world-tag/Dockerfile +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world-tag/REGISTRY +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/docker/hello-world-tag/VERSION +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/scripts/toolchain/run.ps1 +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/scripts/toolchain/run.sh +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/taskcluster/test_taskgraph/transforms/foo.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/data/testmod/thing.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/mockedopen.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_actions_rebuild_cached_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_actions_registry.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_config.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_create.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_decision.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_docker.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_generator.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_graph.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_main.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_morph.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_optimize.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_optimize_strategies.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_parameters.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_scripts_fetch_content.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_scripts_run_task.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_target_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_taskgraph.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transform_chunking.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transform_docker_image.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transform_task_context.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_base.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_cached_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_fetch.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_from_deps.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_matrix.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_notify.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_run.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_run_toolchain.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_transforms_task.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_archive.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_attributes.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_cached_tasks.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_copy.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_dependencies.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_docker.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_parameterization.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_path.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_python_path.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_readonlydict.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_schema.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_taskcluster.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_templates.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_time.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_treeherder.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_vcs.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_verify.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_workertypes.py +0 -0
- {taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/test/test_util_yaml.py +0 -0
|
@@ -13,13 +13,13 @@ repos:
|
|
|
13
13
|
exclude: template
|
|
14
14
|
- id: check-added-large-files
|
|
15
15
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
16
|
-
rev: v0.11.
|
|
16
|
+
rev: v0.11.7
|
|
17
17
|
hooks:
|
|
18
18
|
- id: ruff
|
|
19
19
|
args: [--fix, --exit-non-zero-on-fix]
|
|
20
20
|
- id: ruff-format
|
|
21
21
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
22
|
-
rev: 0.
|
|
22
|
+
rev: 0.7.2
|
|
23
23
|
hooks:
|
|
24
24
|
- id: uv-lock
|
|
25
25
|
- repo: https://github.com/adrienverge/yamllint.git
|
|
@@ -37,7 +37,7 @@ repos:
|
|
|
37
37
|
test/test_util_path.py
|
|
38
38
|
)$
|
|
39
39
|
- repo: https://github.com/compilerla/conventional-pre-commit
|
|
40
|
-
rev: v4.
|
|
40
|
+
rev: v4.1.0
|
|
41
41
|
hooks:
|
|
42
42
|
- id: conventional-pre-commit
|
|
43
43
|
stages: [commit-msg]
|
|
@@ -1,35 +1,53 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
## [14.
|
|
3
|
+
## [14.3.0] - 2025-05-28
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
### Fixed
|
|
6
|
+
|
|
7
|
+
- MAX_ROUTES bumped up to actual limit of 64
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `load-task` command now accepts a `--user` flag to run in container as
|
|
12
|
+
- optionally use `orjson` for faster json operations if available
|
|
13
|
+
|
|
14
|
+
## [14.2.1] - 2025-05-13
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Revert "generic-worker will now verify run-task/fetch-content integrity" from
|
|
19
|
+
14.2.0 for being broken
|
|
20
|
+
|
|
21
|
+
## [14.2.0] - 2025-05-12
|
|
22
|
+
|
|
23
|
+
### Fixed
|
|
6
24
|
|
|
7
25
|
- fix actions scope check on mercurial (#686)
|
|
8
26
|
|
|
9
|
-
|
|
27
|
+
### Changed
|
|
10
28
|
|
|
11
29
|
- generic-worker will now verify run-task/fetch-content integrity (#666)
|
|
12
30
|
|
|
13
|
-
|
|
31
|
+
### Added
|
|
14
32
|
|
|
15
33
|
- new 'load-task' command to debug tasks locally (#680)
|
|
16
34
|
|
|
17
35
|
## [14.1.1] - 2025-04-10
|
|
18
36
|
|
|
19
|
-
|
|
37
|
+
### Fixed
|
|
20
38
|
|
|
21
39
|
- ensure GraphConfig.root_dir is an absolute path (#673)
|
|
22
40
|
|
|
23
41
|
## [14.1.0] - 2025-04-07
|
|
24
42
|
|
|
25
|
-
|
|
43
|
+
### Added
|
|
26
44
|
|
|
27
45
|
- allow task-priority to be keyed by level (#653)
|
|
28
46
|
- implement `taskgraph action` command to generate actions.json on the command line (#645)
|
|
29
47
|
- pass push.base_revision to in-tree-action hook (#656)
|
|
30
48
|
- support for `volume` artifact type (#667)
|
|
31
49
|
|
|
32
|
-
|
|
50
|
+
### Fixed
|
|
33
51
|
|
|
34
52
|
- bug deleting long path names with forward slashes on Windows (#661)
|
|
35
53
|
- replace deprecated datetime.utcnow() with timezone-aware alternative (#652)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: taskcluster-taskgraph
|
|
3
|
-
Version: 14.
|
|
3
|
+
Version: 14.3.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
|
|
@@ -29,6 +29,8 @@ Requires-Dist: taskcluster-urls>=11.0
|
|
|
29
29
|
Requires-Dist: voluptuous>=0.12.1
|
|
30
30
|
Provides-Extra: load-image
|
|
31
31
|
Requires-Dist: zstandard; extra == 'load-image'
|
|
32
|
+
Provides-Extra: orjson
|
|
33
|
+
Requires-Dist: orjson; extra == 'orjson'
|
|
32
34
|
Description-Content-Type: text/x-rst
|
|
33
35
|
|
|
34
36
|
|
{taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/docs/tutorials/getting-started.rst
RENAMED
|
@@ -13,91 +13,86 @@ with your repo in as few steps as possible.
|
|
|
13
13
|
|
|
14
14
|
There are three steps to getting running tasks:
|
|
15
15
|
|
|
16
|
-
1.
|
|
16
|
+
1. Define Tasks
|
|
17
17
|
2. Request Permissions
|
|
18
|
-
3.
|
|
18
|
+
3. Install Taskcluster Github
|
|
19
19
|
|
|
20
20
|
Let's dive into each!
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
22
|
+
Create Tasks
|
|
23
|
+
------------
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
The first step is to define your tasks. You'll need:
|
|
26
26
|
|
|
27
|
-
|
|
27
|
+
1. A :term:`Decision Task` defined in ``.taskcluster.yml``
|
|
28
|
+
2. A Taskgraph setup in the ``taskcluster`` directory
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
Luckily Taskgraph provides an ``init`` command that can generate both of these
|
|
31
|
+
things automatically! Run:
|
|
31
32
|
|
|
32
|
-
..
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
.. code-block:: shell
|
|
34
|
+
|
|
35
|
+
$ pip install taskcluster-taskgraph
|
|
36
|
+
$ taskgraph init
|
|
35
37
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
* - `Firefox-CI <https://firefox-ci-tc.services.mozilla.com>`_
|
|
39
|
-
- https://github.com/apps/firefoxci-taskcluster
|
|
40
|
-
* - `Community <https://community-tc.services.mozilla.com>`_
|
|
41
|
-
- https://github.com/apps/community-tc-integration
|
|
38
|
+
This will automatically generate all the necessary files. Commit what was
|
|
39
|
+
generated:
|
|
42
40
|
|
|
43
|
-
|
|
44
|
-
near the top right. Then select the repository you'd like to enable. If you are
|
|
45
|
-
not an admin of the organization you are enabling the repo for, this will send
|
|
46
|
-
a request to your Github administrators.
|
|
41
|
+
.. code-block:: shell
|
|
47
42
|
|
|
48
|
-
|
|
43
|
+
$ git add .
|
|
44
|
+
$ git commit -m "Add Taskcluster files"
|
|
49
45
|
|
|
50
|
-
|
|
51
|
-
|
|
46
|
+
Land your changes on the default branch (typically ``main``). Nothing will
|
|
47
|
+
happen yet, but we need that ``.taskcluster.yml`` file to exist at the root of
|
|
48
|
+
the repository for the next step.
|
|
52
49
|
|
|
53
50
|
Request Permissions
|
|
54
51
|
-------------------
|
|
55
52
|
|
|
56
|
-
Your repository
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
53
|
+
Your repository now has some tasks defined, but it won't have permission to run
|
|
54
|
+
anything. In the Taskcluster world, permissions are also known as :term:`scopes
|
|
55
|
+
<Scope>`. So the next step is to contact your Taskcluster administrators and
|
|
56
|
+
request scopes for your project so that it has access to the resources it needs
|
|
57
|
+
to run tasks.
|
|
61
58
|
|
|
62
|
-
|
|
63
|
-
to request scopes for some known Taskcluster deployments:
|
|
59
|
+
.. note::
|
|
64
60
|
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
61
|
+
For Mozilla's `Firefox-CI <https://firefox-ci-tc.services.mozilla.com>`_ instance,
|
|
62
|
+
file a bug under `Release Engineering :: Firefox-CI Administration
|
|
63
|
+
<https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering&component=Firefox-CI%20Administration>`_
|
|
68
64
|
|
|
69
|
-
* -
|
|
70
|
-
- Process
|
|
71
|
-
* - `Firefox-CI <https://firefox-ci-tc.services.mozilla.com>`_
|
|
72
|
-
- `File a Bug <https://bugzilla.mozilla.org/enter_bug.cgi?product=Release%20Engineering&component=Firefox-CI%20Administration>`_
|
|
73
|
-
* - `Community <https://community-tc.services.mozilla.com>`_
|
|
74
|
-
- `File an Issue <https://github.com/taskcluster/community-tc-config/issues/new>`_
|
|
65
|
+
Use a title such as: *Please setup `org/my-repo` with Taskcluster*.
|
|
75
66
|
|
|
76
|
-
|
|
67
|
+
Install Taskcluster Github
|
|
68
|
+
--------------------------
|
|
77
69
|
|
|
78
|
-
|
|
79
|
-
------------
|
|
70
|
+
.. note::
|
|
80
71
|
|
|
81
|
-
|
|
72
|
+
If you are not using Github, skip this section and reach out to your
|
|
73
|
+
Taskcluster administrators, there may be other steps to integrate your
|
|
74
|
+
repository.
|
|
82
75
|
|
|
83
|
-
|
|
84
|
-
|
|
76
|
+
Each Taskcluster deployment has an associated Github app that needs to be added
|
|
77
|
+
to your repo. If you are unsure which app your deployment uses, ask your
|
|
78
|
+
Taskcluster administrators.
|
|
85
79
|
|
|
86
|
-
|
|
87
|
-
things automatically! Run:
|
|
80
|
+
.. note::
|
|
88
81
|
|
|
89
|
-
|
|
82
|
+
The Github app for Mozilla's `Firefox-CI
|
|
83
|
+
<https://firefox-ci-tc.services.mozilla.com>`_ instance can be found here:
|
|
90
84
|
|
|
91
|
-
|
|
92
|
-
$ taskgraph init
|
|
85
|
+
https://github.com/apps/firefoxci-taskcluster
|
|
93
86
|
|
|
94
|
-
|
|
95
|
-
|
|
87
|
+
Open the page of the Github app for your deployment and click ``Configure``
|
|
88
|
+
near the top right. Then select the repository you'd like to enable. If you are
|
|
89
|
+
not an admin of the organization you are enabling the repo for, this will send
|
|
90
|
+
a request to your Github administrators.
|
|
96
91
|
|
|
97
|
-
..
|
|
92
|
+
.. note::
|
|
98
93
|
|
|
99
|
-
|
|
100
|
-
|
|
94
|
+
If you do not see a ``Configure`` button, contact your Github administrators
|
|
95
|
+
for assistance.
|
|
101
96
|
|
|
102
97
|
Now when you push, you should have a working Decision task that generates a
|
|
103
98
|
``hello-world`` task as well as a ``docker-image`` task that it depends on!
|
|
@@ -34,9 +34,8 @@ dependencies = [
|
|
|
34
34
|
dynamic = ["version"] # set in src/taskgraph/__init__.py
|
|
35
35
|
|
|
36
36
|
[project.optional-dependencies]
|
|
37
|
-
load-image = [
|
|
38
|
-
|
|
39
|
-
]
|
|
37
|
+
load-image = ["zstandard"]
|
|
38
|
+
orjson = ["orjson"]
|
|
40
39
|
|
|
41
40
|
[project.scripts]
|
|
42
41
|
taskgraph = "taskgraph.main:main"
|
|
@@ -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__ = "14.
|
|
5
|
+
__version__ = "14.3.0"
|
|
6
6
|
|
|
7
7
|
# Maximum number of dependencies a single task can have
|
|
8
8
|
# https://docs.taskcluster.net/docs/reference/platform/queue/api#createTask
|
{taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/actions/registry.py
RENAMED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import functools
|
|
7
|
-
import json
|
|
8
7
|
from collections import namedtuple
|
|
9
8
|
from types import FunctionType
|
|
10
9
|
|
|
@@ -13,7 +12,7 @@ from mozilla_repo_urls import parse
|
|
|
13
12
|
from taskgraph import create
|
|
14
13
|
from taskgraph.config import load_graph_config
|
|
15
14
|
from taskgraph.parameters import Parameters
|
|
16
|
-
from taskgraph.util import hash, taskcluster, yaml
|
|
15
|
+
from taskgraph.util import hash, json, taskcluster, yaml
|
|
17
16
|
from taskgraph.util.python_path import import_sibling_modules
|
|
18
17
|
|
|
19
18
|
actions = []
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import json
|
|
7
6
|
import logging
|
|
8
7
|
import os
|
|
9
8
|
import sys
|
|
@@ -11,6 +10,7 @@ from concurrent import futures
|
|
|
11
10
|
|
|
12
11
|
from slugid import nice as slugid
|
|
13
12
|
|
|
13
|
+
from taskgraph.util import json
|
|
14
14
|
from taskgraph.util.parameterization import resolve_timestamps
|
|
15
15
|
from taskgraph.util.taskcluster import CONCURRENCY, get_session
|
|
16
16
|
from taskgraph.util.time import current_json_time
|
|
@@ -116,8 +116,7 @@ def create_task(session, task_id, label, task_def):
|
|
|
116
116
|
[task_id, task_def],
|
|
117
117
|
sys.stdout,
|
|
118
118
|
sort_keys=True,
|
|
119
|
-
indent=
|
|
120
|
-
separators=(",", ": "),
|
|
119
|
+
indent=2,
|
|
121
120
|
)
|
|
122
121
|
# add a newline
|
|
123
122
|
print("")
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import json
|
|
7
6
|
import logging
|
|
8
7
|
import os
|
|
9
8
|
import pathlib
|
|
@@ -19,6 +18,7 @@ from taskgraph.create import create_tasks
|
|
|
19
18
|
from taskgraph.generator import TaskGraphGenerator
|
|
20
19
|
from taskgraph.parameters import Parameters, get_version
|
|
21
20
|
from taskgraph.taskgraph import TaskGraph
|
|
21
|
+
from taskgraph.util import json
|
|
22
22
|
from taskgraph.util.python_path import find_object
|
|
23
23
|
from taskgraph.util.schema import Schema, validate_schema
|
|
24
24
|
from taskgraph.util.vcs import Repository, get_repository
|
|
@@ -374,7 +374,7 @@ def write_artifact(filename, data):
|
|
|
374
374
|
yaml.safe_dump(data, f, allow_unicode=True, default_flow_style=False)
|
|
375
375
|
elif filename.endswith(".json"):
|
|
376
376
|
with open(path, "w") as f:
|
|
377
|
-
json.dump(data, f, sort_keys=True, indent=2
|
|
377
|
+
json.dump(data, f, sort_keys=True, indent=2)
|
|
378
378
|
elif filename.endswith(".gz"):
|
|
379
379
|
import gzip
|
|
380
380
|
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
4
4
|
|
|
5
5
|
|
|
6
|
-
import json
|
|
7
6
|
import os
|
|
8
7
|
import shlex
|
|
9
8
|
import subprocess
|
|
@@ -18,7 +17,7 @@ try:
|
|
|
18
17
|
except ImportError as e:
|
|
19
18
|
zstd = e
|
|
20
19
|
|
|
21
|
-
from taskgraph.util import docker
|
|
20
|
+
from taskgraph.util import docker, json
|
|
22
21
|
from taskgraph.util.taskcluster import (
|
|
23
22
|
get_artifact_url,
|
|
24
23
|
get_root_url,
|
|
@@ -251,7 +250,8 @@ def _index(l: List, s: str) -> Optional[int]:
|
|
|
251
250
|
pass
|
|
252
251
|
|
|
253
252
|
|
|
254
|
-
def load_task(task_id, remove=True):
|
|
253
|
+
def load_task(task_id, remove=True, user=None):
|
|
254
|
+
user = user or "worker"
|
|
255
255
|
task_def = get_task_definition(task_id)
|
|
256
256
|
|
|
257
257
|
if (
|
|
@@ -316,7 +316,7 @@ def load_task(task_id, remove=True):
|
|
|
316
316
|
image_tag,
|
|
317
317
|
"bash",
|
|
318
318
|
"-c",
|
|
319
|
-
f"{shlex.join(command)} && cd $TASK_WORKDIR && su -p
|
|
319
|
+
f"{shlex.join(command)} && cd $TASK_WORKDIR && su -p {user}",
|
|
320
320
|
]
|
|
321
321
|
|
|
322
322
|
if remove:
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
import argparse
|
|
6
6
|
import atexit
|
|
7
|
-
import json
|
|
8
7
|
import logging
|
|
9
8
|
import os
|
|
10
9
|
import re
|
|
@@ -56,9 +55,9 @@ def format_taskgraph_labels(taskgraph):
|
|
|
56
55
|
|
|
57
56
|
|
|
58
57
|
def format_taskgraph_json(taskgraph):
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
58
|
+
from taskgraph.util import json
|
|
59
|
+
|
|
60
|
+
return json.dumps(taskgraph.to_json(), sort_keys=True, indent=2)
|
|
62
61
|
|
|
63
62
|
|
|
64
63
|
def format_taskgraph_yaml(taskgraph):
|
|
@@ -667,11 +666,12 @@ def image_digest(args):
|
|
|
667
666
|
default=True,
|
|
668
667
|
help="Keep the docker container after exiting.",
|
|
669
668
|
)
|
|
669
|
+
@argument("--user", default=None, help="Container user to start shell with.")
|
|
670
670
|
def load_task(args):
|
|
671
671
|
from taskgraph.docker import load_task
|
|
672
672
|
|
|
673
673
|
validate_docker()
|
|
674
|
-
return load_task(args["task_id"], remove=args["remove"])
|
|
674
|
+
return load_task(args["task_id"], remove=args["remove"], user=args["user"])
|
|
675
675
|
|
|
676
676
|
|
|
677
677
|
@command("decision", help="Run the decision task")
|
|
@@ -756,6 +756,7 @@ def actions(args):
|
|
|
756
756
|
from taskgraph.actions import render_actions_json
|
|
757
757
|
from taskgraph.generator import TaskGraphGenerator
|
|
758
758
|
from taskgraph.parameters import parameters_loader
|
|
759
|
+
from taskgraph.util import json
|
|
759
760
|
|
|
760
761
|
if args.pop("verbose", False):
|
|
761
762
|
logging.root.setLevel(logging.DEBUG)
|
|
@@ -765,7 +766,7 @@ def actions(args):
|
|
|
765
766
|
tgg = TaskGraphGenerator(root_dir=args.get("root"), parameters=parameters)
|
|
766
767
|
|
|
767
768
|
actions = render_actions_json(tgg.parameters, tgg.graph_config, "DECISION-TASK")
|
|
768
|
-
print(json.dumps(actions, sort_keys=True, indent=2
|
|
769
|
+
print(json.dumps(actions, sort_keys=True, indent=2))
|
|
769
770
|
except Exception:
|
|
770
771
|
traceback.print_exc()
|
|
771
772
|
sys.exit(1)
|
|
@@ -783,6 +784,7 @@ def actions(args):
|
|
|
783
784
|
def action_callback(options):
|
|
784
785
|
from taskgraph.actions import trigger_action_callback
|
|
785
786
|
from taskgraph.actions.util import get_parameters
|
|
787
|
+
from taskgraph.util import json
|
|
786
788
|
|
|
787
789
|
try:
|
|
788
790
|
# the target task for this action (or null if it's a group action)
|
|
@@ -832,7 +834,7 @@ def test_action_callback(options):
|
|
|
832
834
|
import taskgraph.actions
|
|
833
835
|
import taskgraph.parameters
|
|
834
836
|
from taskgraph.config import load_graph_config
|
|
835
|
-
from taskgraph.util import yaml
|
|
837
|
+
from taskgraph.util import json, yaml
|
|
836
838
|
|
|
837
839
|
def load_data(filename):
|
|
838
840
|
with open(filename) as f:
|
|
@@ -30,7 +30,7 @@ from .util.workertypes import get_worker_type
|
|
|
30
30
|
|
|
31
31
|
here = os.path.abspath(os.path.dirname(__file__))
|
|
32
32
|
logger = logging.getLogger(__name__)
|
|
33
|
-
MAX_ROUTES =
|
|
33
|
+
MAX_ROUTES = 64
|
|
34
34
|
|
|
35
35
|
registered_morphs = []
|
|
36
36
|
|
|
@@ -155,10 +155,9 @@ def make_index_task(parent_task, taskgraph, label_to_taskid, parameters, graph_c
|
|
|
155
155
|
@register_morph
|
|
156
156
|
def add_index_tasks(taskgraph, label_to_taskid, parameters, graph_config):
|
|
157
157
|
"""
|
|
158
|
-
The TaskCluster queue only allows
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
directly, avoiding the limits on task.routes.
|
|
158
|
+
The TaskCluster queue only allows 64 routes on a task. In the event a task
|
|
159
|
+
exceeds this limit, this graph morph adds "index tasks" that depend on it
|
|
160
|
+
and do the index insertions directly, avoiding the limit on task.routes.
|
|
162
161
|
"""
|
|
163
162
|
logger.debug("Morphing: adding index tasks")
|
|
164
163
|
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
import gzip
|
|
6
6
|
import hashlib
|
|
7
|
-
import json
|
|
8
7
|
import os
|
|
9
8
|
import time
|
|
10
9
|
from datetime import datetime
|
|
@@ -18,7 +17,7 @@ from urllib.request import urlopen
|
|
|
18
17
|
import mozilla_repo_urls
|
|
19
18
|
from voluptuous import ALLOW_EXTRA, Any, Optional, Required, Schema
|
|
20
19
|
|
|
21
|
-
from taskgraph.util import yaml
|
|
20
|
+
from taskgraph.util import json, yaml
|
|
22
21
|
from taskgraph.util.readonlydict import ReadOnlyDict
|
|
23
22
|
from taskgraph.util.schema import validate_schema
|
|
24
23
|
from taskgraph.util.taskcluster import find_task_id, get_artifact_url
|
|
@@ -2,8 +2,6 @@
|
|
|
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
|
-
|
|
6
|
-
import json
|
|
7
5
|
import logging
|
|
8
6
|
import os
|
|
9
7
|
import re
|
|
@@ -12,6 +10,7 @@ from voluptuous import Optional, Required
|
|
|
12
10
|
|
|
13
11
|
import taskgraph
|
|
14
12
|
from taskgraph.transforms.base import TransformSequence
|
|
13
|
+
from taskgraph.util import json
|
|
15
14
|
from taskgraph.util.docker import create_context_tar, generate_context_hash
|
|
16
15
|
from taskgraph.util.schema import Schema
|
|
17
16
|
|
|
@@ -10,7 +10,6 @@ run-using handlers in `taskcluster/taskgraph/transforms/run`.
|
|
|
10
10
|
"""
|
|
11
11
|
|
|
12
12
|
import copy
|
|
13
|
-
import json
|
|
14
13
|
import logging
|
|
15
14
|
|
|
16
15
|
from voluptuous import Exclusive, Extra, Optional, Required
|
|
@@ -18,6 +17,7 @@ from voluptuous import Exclusive, Extra, Optional, Required
|
|
|
18
17
|
from taskgraph.transforms.base import TransformSequence
|
|
19
18
|
from taskgraph.transforms.cached_tasks import order_tasks
|
|
20
19
|
from taskgraph.transforms.task import task_description_schema
|
|
20
|
+
from taskgraph.util import json
|
|
21
21
|
from taskgraph.util import path as mozpath
|
|
22
22
|
from taskgraph.util.python_path import import_sibling_modules
|
|
23
23
|
from taskgraph.util.schema import Schema, validate_schema
|
{taskcluster_taskgraph-14.2.0 → taskcluster_taskgraph-14.3.0}/src/taskgraph/transforms/run/common.py
RENAMED
|
@@ -7,11 +7,10 @@ worker implementation they operate on, and take the same three parameters, for
|
|
|
7
7
|
consistency.
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
import json
|
|
11
10
|
from typing import Any, Dict, List, Union
|
|
12
11
|
|
|
13
12
|
from taskgraph.transforms.base import TransformConfig
|
|
14
|
-
from taskgraph.util import path
|
|
13
|
+
from taskgraph.util import json, path
|
|
15
14
|
from taskgraph.util.caches import CACHES, get_checkout_dir
|
|
16
15
|
from taskgraph.util.taskcluster import get_artifact_prefix
|
|
17
16
|
|
|
@@ -6,9 +6,7 @@ Support for running tasks that are invoked via the `run-task` script.
|
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
8
|
import dataclasses
|
|
9
|
-
import hashlib
|
|
10
9
|
import os
|
|
11
|
-
from pathlib import Path
|
|
12
10
|
|
|
13
11
|
from voluptuous import Any, Optional, Required
|
|
14
12
|
|
|
@@ -27,9 +25,6 @@ EXEC_COMMANDS = {
|
|
|
27
25
|
"powershell": ["powershell.exe", "-ExecutionPolicy", "Bypass"],
|
|
28
26
|
}
|
|
29
27
|
|
|
30
|
-
RUN_TASK_PATH = Path(__file__).parent.parent.parent / "run-task" / "run-task"
|
|
31
|
-
FETCH_CONTENT_PATH = Path(__file__).parent.parent.parent / "run-task" / "fetch-content"
|
|
32
|
-
|
|
33
28
|
run_task_schema = Schema(
|
|
34
29
|
{
|
|
35
30
|
Required("using"): "run-task",
|
|
@@ -174,14 +169,10 @@ def generic_worker_run_task(config, task, taskdesc):
|
|
|
174
169
|
common_setup(config, task, taskdesc, command)
|
|
175
170
|
|
|
176
171
|
worker.setdefault("mounts", [])
|
|
177
|
-
run_task_sha256 = hashlib.sha256(RUN_TASK_PATH.read_bytes()).hexdigest()
|
|
178
|
-
fetch_content_sha256 = hashlib.sha256(FETCH_CONTENT_PATH.read_bytes()).hexdigest()
|
|
179
172
|
worker["mounts"].append(
|
|
180
173
|
{
|
|
181
174
|
"content": {
|
|
182
|
-
"
|
|
183
|
-
"artifact": "public/run-task",
|
|
184
|
-
"sha256": run_task_sha256,
|
|
175
|
+
"url": script_url(config, "run-task"),
|
|
185
176
|
},
|
|
186
177
|
"file": "./run-task",
|
|
187
178
|
}
|
|
@@ -190,9 +181,7 @@ def generic_worker_run_task(config, task, taskdesc):
|
|
|
190
181
|
worker["mounts"].append(
|
|
191
182
|
{
|
|
192
183
|
"content": {
|
|
193
|
-
"
|
|
194
|
-
"artifact": "public/fetch-content",
|
|
195
|
-
"sha256": fetch_content_sha256,
|
|
184
|
+
"url": script_url(config, "fetch-content"),
|
|
196
185
|
},
|
|
197
186
|
"file": "./fetch-content",
|
|
198
187
|
}
|
|
@@ -0,0 +1,73 @@
|
|
|
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
|
+
"""
|
|
6
|
+
This module is a compatibility shim between stdlib json and orjson.
|
|
7
|
+
It uses orjson if available, and falls back to stdlib json.
|
|
8
|
+
|
|
9
|
+
It only supports features and parameters that both modules support,
|
|
10
|
+
and attempts to produce identical output regardless of which module
|
|
11
|
+
is used.
|
|
12
|
+
|
|
13
|
+
The interface is a subset of what's supported by stdlib json.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
import json
|
|
19
|
+
from typing import TYPE_CHECKING, Any, Callable
|
|
20
|
+
|
|
21
|
+
if TYPE_CHECKING:
|
|
22
|
+
from _typeshed import SupportsRead, SupportsWrite
|
|
23
|
+
|
|
24
|
+
try:
|
|
25
|
+
import orjson
|
|
26
|
+
except ImportError:
|
|
27
|
+
orjson = None
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def loads(s: str | bytes | bytearray) -> Any:
|
|
31
|
+
if orjson:
|
|
32
|
+
return orjson.loads(s)
|
|
33
|
+
|
|
34
|
+
return json.loads(s)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def load(fh: SupportsRead[str | bytes]) -> Any:
|
|
38
|
+
if orjson:
|
|
39
|
+
return loads(fh.read())
|
|
40
|
+
return json.load(fh)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def dumps(
|
|
44
|
+
obj: Any,
|
|
45
|
+
default: Callable[[Any], Any] | None = None,
|
|
46
|
+
indent: int | None = None,
|
|
47
|
+
sort_keys: bool = False,
|
|
48
|
+
) -> str:
|
|
49
|
+
if indent and indent != 2:
|
|
50
|
+
raise ValueError("An indent other than 2 is not supported!")
|
|
51
|
+
|
|
52
|
+
if orjson:
|
|
53
|
+
option = 0
|
|
54
|
+
if indent:
|
|
55
|
+
option |= orjson.OPT_INDENT_2
|
|
56
|
+
|
|
57
|
+
if sort_keys:
|
|
58
|
+
option |= orjson.OPT_SORT_KEYS
|
|
59
|
+
|
|
60
|
+
return orjson.dumps(obj, default=default, option=option).decode("utf-8")
|
|
61
|
+
|
|
62
|
+
separators = (",", ": ") if indent else (",", ":")
|
|
63
|
+
return json.dumps(
|
|
64
|
+
obj,
|
|
65
|
+
default=default,
|
|
66
|
+
indent=indent,
|
|
67
|
+
sort_keys=sort_keys,
|
|
68
|
+
separators=separators,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def dump(obj: Any, fh: SupportsWrite[str], **kwargs) -> None:
|
|
73
|
+
fh.write(dumps(obj, **kwargs))
|
|
@@ -9,7 +9,7 @@ apt-get install -y --force-yes --no-install-recommends \
|
|
|
9
9
|
python3-pip
|
|
10
10
|
|
|
11
11
|
pushd /setup/taskgraph
|
|
12
|
-
uv export --no-cache --no-dev > /setup/requirements.txt
|
|
12
|
+
uv export --no-cache --extra orjson --no-dev > /setup/requirements.txt
|
|
13
13
|
uv pip install --no-cache --system --break-system-packages -r /setup/requirements.txt
|
|
14
14
|
uv pip install --no-cache --system --break-system-packages --no-deps .
|
|
15
15
|
popd
|