mozilla-taskgraph 4.0.0__tar.gz → 4.0.2__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.
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.github/workflows/pypi-publish.yml +3 -3
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.pre-commit-config.yaml +5 -5
- mozilla_taskgraph-4.0.2/.readthedocs.yml +19 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.taskcluster.yml +19 -19
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/CHANGELOG.md +14 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/PKG-INFO +4 -2
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/conf.py +0 -1
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/pyproject.toml +14 -7
- mozilla_taskgraph-4.0.2/renovate.json +6 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/config.py +2 -4
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/replicate.py +4 -6
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/scriptworker/release_artifacts.py +3 -2
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/scriptworker/shipit/mark_as_shipped.py +4 -8
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/config.yml +2 -2
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/docker/fetch/Dockerfile +1 -1
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/docker/python/Dockerfile +2 -2
- mozilla_taskgraph-4.0.2/taskcluster/kinds/complete/kind.yml +23 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/kinds/docker-image/kind.yml +1 -1
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/kinds/test/kind.yml +1 -1
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/actions/test_release_promotion.py +12 -15
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/transforms/test_replicate.py +8 -6
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/uv.lock +166 -95
- mozilla_taskgraph-4.0.0/.readthedocs.yml +0 -13
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.codespell-ignore-words.txt +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.github/CODEOWNERS +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.github/workflows/pre-commit-autoupdate.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.github/workflows/pre-commit.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.gitignore +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/.yamllint +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/CODE_OF_CONDUCT.md +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/CONTRIBUTING.md +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/LICENSE +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/Makefile +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/README.md +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/actions/index.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/actions/release-promotion.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/index.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/transforms/index.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/transforms/scriptworker/index.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/transforms/scriptworker/release_artifacts.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/docs/transforms/scriptworker/ship-it.rst +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/actions/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/actions/release_promotion.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/scriptworker/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/scriptworker/shipit/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/util/signed_artifacts.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/version.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/worker_types.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/docker/fetch/REGISTRY +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/kinds/check/kind.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/kinds/codecov/kind.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/kinds/fetch/kind.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/kinds/release-promotion-dummy/kind.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/mt_taskgraph/target_tasks.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/mt_taskgraph/transforms/test.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/taskcluster/scripts/codecov-upload.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/actions/__init__.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/conftest.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/data/taskcluster/config.yml +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/data/testver.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/test_register.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/test_version.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/test_worker_types.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/transforms/test_scriptworker_release_artifacts.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/transforms/test_scriptworker_shipit.py +0 -0
- {mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/test/util/test_signed_artifacts.py +0 -0
|
@@ -11,10 +11,10 @@ jobs:
|
|
|
11
11
|
id-token: write
|
|
12
12
|
steps:
|
|
13
13
|
- name: Checkout sources
|
|
14
|
-
uses: actions/checkout@
|
|
15
|
-
- uses: actions/setup-python@
|
|
14
|
+
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
|
|
15
|
+
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
|
|
16
16
|
with:
|
|
17
|
-
python-version: '3.
|
|
17
|
+
python-version: '3.14'
|
|
18
18
|
cache: 'pip'
|
|
19
19
|
- name: Build package distributions
|
|
20
20
|
run: |
|
|
@@ -13,20 +13,20 @@ repos:
|
|
|
13
13
|
exclude: template
|
|
14
14
|
- id: check-added-large-files
|
|
15
15
|
- repo: https://github.com/astral-sh/uv-pre-commit
|
|
16
|
-
rev: 0.
|
|
16
|
+
rev: 0.9.28
|
|
17
17
|
hooks:
|
|
18
18
|
- id: uv-lock
|
|
19
19
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
20
|
-
rev: 'v0.
|
|
20
|
+
rev: 'v0.14.14'
|
|
21
21
|
hooks:
|
|
22
22
|
- id: ruff
|
|
23
23
|
args: [--fix, --exit-non-zero-on-fix]
|
|
24
24
|
- repo: https://github.com/psf/black
|
|
25
|
-
rev:
|
|
25
|
+
rev: 26.1.0
|
|
26
26
|
hooks:
|
|
27
27
|
- id: black
|
|
28
28
|
- repo: https://github.com/adrienverge/yamllint.git
|
|
29
|
-
rev: v1.
|
|
29
|
+
rev: v1.38.0
|
|
30
30
|
hooks:
|
|
31
31
|
- id: yamllint
|
|
32
32
|
exclude: template
|
|
@@ -40,7 +40,7 @@ repos:
|
|
|
40
40
|
test/test_util_path.py
|
|
41
41
|
)$
|
|
42
42
|
- repo: https://github.com/compilerla/conventional-pre-commit
|
|
43
|
-
rev: v4.
|
|
43
|
+
rev: v4.3.0
|
|
44
44
|
hooks:
|
|
45
45
|
- id: conventional-pre-commit
|
|
46
46
|
stages: [commit-msg]
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
version: 2
|
|
3
|
+
build:
|
|
4
|
+
os: "ubuntu-24.04"
|
|
5
|
+
tools:
|
|
6
|
+
python: "3.14"
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
pre_create_environment:
|
|
10
|
+
- asdf plugin add uv
|
|
11
|
+
- asdf install uv latest
|
|
12
|
+
- asdf global uv latest
|
|
13
|
+
create_environment:
|
|
14
|
+
- uv venv "${READTHEDOCS_VIRTUALENV_PATH}"
|
|
15
|
+
install:
|
|
16
|
+
- UV_PROJECT_ENVIRONMENT="${READTHEDOCS_VIRTUALENV_PATH}" uv sync --frozen --group docs
|
|
17
|
+
|
|
18
|
+
sphinx:
|
|
19
|
+
configuration: docs/conf.py
|
|
@@ -29,7 +29,7 @@ tasks:
|
|
|
29
29
|
project:
|
|
30
30
|
$switch:
|
|
31
31
|
'tasks_for == "github-push"': '${event.repository.name}'
|
|
32
|
-
'tasks_for[:19] == "github-pull-request"': '${event.pull_request.
|
|
32
|
+
'tasks_for[:19] == "github-pull-request"': '${event.pull_request.base.repo.name}'
|
|
33
33
|
'tasks_for in ["cron", "action"]': '${repository.project}'
|
|
34
34
|
head_branch:
|
|
35
35
|
$switch:
|
|
@@ -110,7 +110,7 @@ tasks:
|
|
|
110
110
|
description: 'Created by a [cron task](https://firefox-ci-tc.services.mozilla.com/tasks/${cron.task_id})'
|
|
111
111
|
|
|
112
112
|
provisionerId: "${trustDomain}-${level}"
|
|
113
|
-
workerType: "decision
|
|
113
|
+
workerType: "decision"
|
|
114
114
|
|
|
115
115
|
tags:
|
|
116
116
|
$switch:
|
|
@@ -206,7 +206,7 @@ tasks:
|
|
|
206
206
|
features:
|
|
207
207
|
taskclusterProxy: true
|
|
208
208
|
|
|
209
|
-
image: mozillareleases/taskgraph:run-task-
|
|
209
|
+
image: mozillareleases/taskgraph:run-task-v18.1.0@sha256:43d1ba6d149bf8539b1bc7aef95c9adfe8ca76714f2f6beaa5f87c3059559466
|
|
210
210
|
maxRunTime: 1800
|
|
211
211
|
|
|
212
212
|
command:
|
|
@@ -258,19 +258,19 @@ tasks:
|
|
|
258
258
|
# debugging, but they are not useful long-term.
|
|
259
259
|
expires: {$fromNow: '7 day'}
|
|
260
260
|
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
261
|
+
extra:
|
|
262
|
+
$merge:
|
|
263
|
+
- $if: 'tasks_for == "action"'
|
|
264
|
+
then:
|
|
265
|
+
parent: '${action.taskGroupId}'
|
|
266
|
+
action:
|
|
267
|
+
name: '${action.name}'
|
|
268
|
+
context:
|
|
269
|
+
taskGroupId: '${action.taskGroupId}'
|
|
270
|
+
taskId: {$eval: 'taskId'}
|
|
271
|
+
input: {$eval: 'input'}
|
|
272
|
+
clientId: {$eval: 'clientId'}
|
|
273
|
+
- $if: 'tasks_for == "cron"'
|
|
274
|
+
then:
|
|
275
|
+
cron: {$json: {$eval: 'cron'}}
|
|
276
|
+
- tasks_for: '${tasks_for}'
|
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
## 4.0.2 (2026-02-06)
|
|
2
|
+
|
|
3
|
+
### Fix
|
|
4
|
+
|
|
5
|
+
- Change all voluptuous schema names to LegacySchema
|
|
6
|
+
- updated artifact fetch for taskgraph 19 compatibility
|
|
7
|
+
- update readthedocs config
|
|
8
|
+
|
|
9
|
+
## 4.0.1 (2025-11-17)
|
|
10
|
+
|
|
11
|
+
### Fix
|
|
12
|
+
|
|
13
|
+
- mark compatible with Taskgraph v18.x
|
|
14
|
+
|
|
1
15
|
## 4.0.0 (2025-10-17)
|
|
2
16
|
|
|
3
17
|
### Fix
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mozilla-taskgraph
|
|
3
|
-
Version: 4.0.
|
|
3
|
+
Version: 4.0.2
|
|
4
4
|
Summary: Mozilla specific transforms and utilities for Taskgraph
|
|
5
5
|
Project-URL: Repository, https://github.com/mozilla-releng/mozilla-taskgraph
|
|
6
6
|
Project-URL: Issues, https://github.com/mozilla-releng/mozilla-taskgraph/issues
|
|
@@ -13,9 +13,11 @@ Classifier: Programming Language :: Python :: 3.9
|
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.10
|
|
14
14
|
Classifier: Programming Language :: Python :: 3.11
|
|
15
15
|
Classifier: Programming Language :: Python :: 3.12
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
18
|
Classifier: Topic :: Software Development
|
|
17
19
|
Requires-Python: >=3.9
|
|
18
|
-
Requires-Dist: taskcluster-taskgraph<
|
|
20
|
+
Requires-Dist: taskcluster-taskgraph<20,>=19
|
|
19
21
|
Description-Content-Type: text/markdown
|
|
20
22
|
|
|
21
23
|
[](https://firefox-ci-tc.services.mozilla.com/api/github/v1/repository/mozilla-releng/mozilla-taskgraph/main/latest)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mozilla-taskgraph"
|
|
3
|
-
version = "4.0.
|
|
3
|
+
version = "4.0.2"
|
|
4
4
|
description = "Mozilla specific transforms and utilities for Taskgraph"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
authors = [
|
|
@@ -14,32 +14,39 @@ classifiers = [
|
|
|
14
14
|
"Programming Language :: Python :: 3.10",
|
|
15
15
|
"Programming Language :: Python :: 3.11",
|
|
16
16
|
"Programming Language :: Python :: 3.12",
|
|
17
|
+
"Programming Language :: Python :: 3.13",
|
|
18
|
+
"Programming Language :: Python :: 3.14",
|
|
17
19
|
"Topic :: Software Development",
|
|
18
20
|
]
|
|
19
21
|
requires-python = ">=3.9"
|
|
20
22
|
dependencies = [
|
|
21
|
-
"taskcluster-taskgraph>=
|
|
23
|
+
"taskcluster-taskgraph>=19,<20",
|
|
22
24
|
]
|
|
23
25
|
|
|
24
26
|
[project.urls]
|
|
25
27
|
Repository = "https://github.com/mozilla-releng/mozilla-taskgraph"
|
|
26
28
|
Issues = "https://github.com/mozilla-releng/mozilla-taskgraph/issues"
|
|
27
29
|
|
|
28
|
-
[
|
|
29
|
-
dev
|
|
30
|
+
[dependency-groups]
|
|
31
|
+
dev = [
|
|
30
32
|
"commitizen",
|
|
31
33
|
"coverage",
|
|
32
34
|
"pytest",
|
|
33
35
|
"pytest-mock",
|
|
34
36
|
"responses",
|
|
35
|
-
"
|
|
37
|
+
"taskcluster_urls",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
docs = [
|
|
41
|
+
"sphinx~=9.1.0",
|
|
36
42
|
"sphinx-autobuild",
|
|
37
43
|
"sphinx-argparse",
|
|
38
44
|
"sphinx-book-theme",
|
|
39
|
-
"sphinxcontrib-mermaid",
|
|
40
|
-
"taskcluster_urls",
|
|
41
45
|
]
|
|
42
46
|
|
|
47
|
+
[tool.uv.dependency-groups]
|
|
48
|
+
docs = {requires-python = ">=3.12"}
|
|
49
|
+
|
|
43
50
|
[build-system]
|
|
44
51
|
requires = ["hatchling"]
|
|
45
52
|
build-backend = "hatchling.build"
|
|
@@ -12,15 +12,13 @@ tg.graph_config_schema = tg.graph_config_schema.extend(
|
|
|
12
12
|
},
|
|
13
13
|
Optional(
|
|
14
14
|
"version-parser",
|
|
15
|
-
description=dedent(
|
|
16
|
-
"""
|
|
15
|
+
description=dedent("""
|
|
17
16
|
Python path of the form ``<module>:<obj>`` pointing to a
|
|
18
17
|
function that takes a set of parameters as input and returns
|
|
19
18
|
the version string to use for release tasks.
|
|
20
19
|
|
|
21
20
|
Defaults to ``mozilla_taskgraph.version:default_parser``.
|
|
22
|
-
""".lstrip()
|
|
23
|
-
),
|
|
21
|
+
""".lstrip()),
|
|
24
22
|
): str,
|
|
25
23
|
}
|
|
26
24
|
)
|
{mozilla_taskgraph-4.0.0 → mozilla_taskgraph-4.0.2}/src/mozilla_taskgraph/transforms/replicate.py
RENAMED
|
@@ -11,7 +11,7 @@ from textwrap import dedent
|
|
|
11
11
|
from taskcluster.exceptions import TaskclusterRestFailure
|
|
12
12
|
from taskgraph.transforms.base import TransformSequence
|
|
13
13
|
from taskgraph.util.attributes import attrmatch
|
|
14
|
-
from taskgraph.util.schema import
|
|
14
|
+
from taskgraph.util.schema import LegacySchema
|
|
15
15
|
from taskgraph.util.taskcluster import (
|
|
16
16
|
find_task_id,
|
|
17
17
|
get_artifact,
|
|
@@ -19,7 +19,7 @@ from taskgraph.util.taskcluster import (
|
|
|
19
19
|
)
|
|
20
20
|
from voluptuous import ALLOW_EXTRA, Any, Optional, Required
|
|
21
21
|
|
|
22
|
-
REPLICATE_SCHEMA =
|
|
22
|
+
REPLICATE_SCHEMA = LegacySchema(
|
|
23
23
|
{
|
|
24
24
|
Required(
|
|
25
25
|
"replicate",
|
|
@@ -31,8 +31,7 @@ REPLICATE_SCHEMA = Schema(
|
|
|
31
31
|
): {
|
|
32
32
|
Required(
|
|
33
33
|
"target",
|
|
34
|
-
description=dedent(
|
|
35
|
-
"""
|
|
34
|
+
description=dedent("""
|
|
36
35
|
Define which tasks to target for replication.
|
|
37
36
|
|
|
38
37
|
Each item in the list can be either:
|
|
@@ -42,8 +41,7 @@ REPLICATE_SCHEMA = Schema(
|
|
|
42
41
|
|
|
43
42
|
If any of the resolved tasks are a Decision task, targeted
|
|
44
43
|
tasks will be derived from the `task-graph.json` artifact.
|
|
45
|
-
""".lstrip()
|
|
46
|
-
),
|
|
44
|
+
""".lstrip()),
|
|
47
45
|
): [str],
|
|
48
46
|
Optional(
|
|
49
47
|
"include-attrs",
|
|
@@ -6,17 +6,18 @@ Support a 'release-artifacts' key which automatically sets up the artifacts
|
|
|
6
6
|
under 'public/build' and adds the corresponding attribute needed by downstream
|
|
7
7
|
release tasks.
|
|
8
8
|
"""
|
|
9
|
+
|
|
9
10
|
import os
|
|
10
11
|
|
|
11
12
|
from taskgraph.transforms.base import TransformSequence
|
|
12
13
|
from taskgraph.transforms.task import task_description_schema
|
|
13
|
-
from taskgraph.util.schema import
|
|
14
|
+
from taskgraph.util.schema import LegacySchema
|
|
14
15
|
from taskgraph.util.workertypes import worker_type_implementation
|
|
15
16
|
from voluptuous import Extra, Optional, Required
|
|
16
17
|
|
|
17
18
|
transforms = TransformSequence()
|
|
18
19
|
|
|
19
|
-
release_artifacts_schema =
|
|
20
|
+
release_artifacts_schema = LegacySchema(
|
|
20
21
|
{
|
|
21
22
|
Required("worker-type"): task_description_schema["worker-type"],
|
|
22
23
|
Optional("release-artifacts"): [str],
|
|
@@ -6,12 +6,12 @@ import os
|
|
|
6
6
|
from textwrap import dedent
|
|
7
7
|
|
|
8
8
|
from taskgraph.transforms.base import TransformSequence
|
|
9
|
-
from taskgraph.util.schema import
|
|
9
|
+
from taskgraph.util.schema import LegacySchema, optionally_keyed_by, resolve_keyed_by
|
|
10
10
|
from voluptuous import Extra, Optional
|
|
11
11
|
|
|
12
12
|
transforms = TransformSequence()
|
|
13
13
|
|
|
14
|
-
mark_as_shipped_schema =
|
|
14
|
+
mark_as_shipped_schema = LegacySchema(
|
|
15
15
|
{
|
|
16
16
|
Optional("name"): str,
|
|
17
17
|
Optional("shipit-product"): optionally_keyed_by("build-type", str),
|
|
@@ -60,15 +60,11 @@ def make_task_description(config, tasks):
|
|
|
60
60
|
|
|
61
61
|
if not product:
|
|
62
62
|
config_path = os.path.join(config.graph_config.root_dir, "config.yml")
|
|
63
|
-
raise Exception(
|
|
64
|
-
dedent(
|
|
65
|
-
f"""
|
|
63
|
+
raise Exception(dedent(f"""
|
|
66
64
|
Can't determine ShipIt product!
|
|
67
65
|
|
|
68
66
|
Define it as `shipit-product` in the task definition, or as `shipit.product`
|
|
69
|
-
in {config_path}.""".lstrip()
|
|
70
|
-
)
|
|
71
|
-
)
|
|
67
|
+
in {config_path}.""".lstrip()))
|
|
72
68
|
|
|
73
69
|
task.setdefault("label", task.pop("name", "mark-as-shipped"))
|
|
74
70
|
task["description"] = f"Mark {product} as shipped in Ship-It"
|
|
@@ -14,12 +14,12 @@ workers:
|
|
|
14
14
|
provisioner: '{trust-domain}-{level}'
|
|
15
15
|
implementation: docker-worker
|
|
16
16
|
os: linux
|
|
17
|
-
worker-type: '{alias}
|
|
17
|
+
worker-type: '{alias}'
|
|
18
18
|
linux:
|
|
19
19
|
provisioner: '{trust-domain}-t'
|
|
20
20
|
implementation: docker-worker
|
|
21
21
|
os: linux
|
|
22
|
-
worker-type: '{alias}-
|
|
22
|
+
worker-type: '{alias}-docker'
|
|
23
23
|
succeed:
|
|
24
24
|
provisioner: built-in
|
|
25
25
|
implementation: succeed
|
|
@@ -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
|
-
FROM debian:
|
|
5
|
+
FROM debian:13-slim@sha256:f6e2cfac5cf956ea044b4bd75e6397b4372ad88fe00908045e9a0d21712ae3ba
|
|
6
6
|
LABEL maintainer="Mozilla Release Engineering <release+mozilla-taskgraph@mozilla.com>"
|
|
7
7
|
|
|
8
8
|
VOLUME /builds/worker/checkouts
|
|
@@ -29,7 +29,7 @@ ENV SHELL=/bin/bash \
|
|
|
29
29
|
PATH=/builds/worker/.local/bin:$PATH
|
|
30
30
|
|
|
31
31
|
# uv
|
|
32
|
-
COPY --from=ghcr.io/astral-sh/uv:0.
|
|
32
|
+
COPY --from=ghcr.io/astral-sh/uv:0.9.30@sha256:538e0b39736e7feae937a65983e49d2ab75e1559d35041f9878b7b7e51de91e4 /uv /bin/uv
|
|
33
33
|
# %ARG PYTHON_VERSIONS
|
|
34
34
|
RUN uv python install $PYTHON_VERSIONS
|
|
35
35
|
RUN chown -R worker:worker /builds/worker
|
|
@@ -0,0 +1,23 @@
|
|
|
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
|
+
loader: taskgraph.loader.transform:loader
|
|
6
|
+
|
|
7
|
+
transforms:
|
|
8
|
+
- taskgraph.transforms.from_deps
|
|
9
|
+
- taskgraph.transforms.task
|
|
10
|
+
|
|
11
|
+
kind-dependencies:
|
|
12
|
+
- check
|
|
13
|
+
- test
|
|
14
|
+
|
|
15
|
+
tasks:
|
|
16
|
+
pr:
|
|
17
|
+
description: Ensures required PR tasks have completed
|
|
18
|
+
run-on-tasks-for: ["github-pull-request", "github-pull-request-untrusted"]
|
|
19
|
+
worker-type: succeed
|
|
20
|
+
from-deps:
|
|
21
|
+
group-by: all
|
|
22
|
+
set-name: false
|
|
23
|
+
unique-kinds: false
|
|
@@ -21,7 +21,7 @@ tasks:
|
|
|
21
21
|
description: "Run Python unit tests."
|
|
22
22
|
attributes:
|
|
23
23
|
artifact_prefix: public
|
|
24
|
-
python-versions: ["3.12", "3.11", "3.10", "3.9"]
|
|
24
|
+
python-versions: ["3.14", "3.13", "3.12", "3.11", "3.10", "3.9"]
|
|
25
25
|
run:
|
|
26
26
|
command: >-
|
|
27
27
|
uv run coverage run --data-file $MOZ_ARTIFACT_DIR/coverage --context=py$UV_PYTHON -m pytest -vv
|
|
@@ -49,25 +49,22 @@ def setup(responses, parameters):
|
|
|
49
49
|
)
|
|
50
50
|
|
|
51
51
|
# Only the parameters from the first previous graph is downloaded.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
)
|
|
52
|
+
# get_artifact does a two-step fetch: getLatestArtifact returns
|
|
53
|
+
# {"url": url}, then the content is fetched from that url.
|
|
54
|
+
url = f"{tc_url}/api/queue/v1/task/{list(previous_graphs.keys())[0]}/artifacts/public%2Fparameters.yml"
|
|
55
|
+
responses.add(method="GET", url=url, json={"url": url})
|
|
56
|
+
responses.add(method="GET", url=url, json=parameters)
|
|
57
57
|
|
|
58
58
|
tid = count(0)
|
|
59
59
|
for decision_id, full_task_graph in previous_graphs.items():
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
)
|
|
60
|
+
url = f"{tc_url}/api/queue/v1/task/{decision_id}/artifacts/public%2Ffull-task-graph.json"
|
|
61
|
+
responses.add(method="GET", url=url, json={"url": url})
|
|
62
|
+
responses.add(method="GET", url=url, json=full_task_graph.to_json())
|
|
63
|
+
|
|
65
64
|
label_to_taskid = {label: int(next(tid)) for label in full_task_graph.tasks}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
json=label_to_taskid,
|
|
70
|
-
)
|
|
65
|
+
url = f"{tc_url}/api/queue/v1/task/{decision_id}/artifacts/public%2Flabel-to-taskid.json"
|
|
66
|
+
responses.add(method="GET", url=url, json={"url": url})
|
|
67
|
+
responses.add(method="GET", url=url, json=label_to_taskid)
|
|
71
68
|
|
|
72
69
|
return inner
|
|
73
70
|
|
|
@@ -214,10 +214,11 @@ def test_decision_task(responses, run_replicate):
|
|
|
214
214
|
expected = get_expected(prefix, *task_defs)
|
|
215
215
|
|
|
216
216
|
counter = count()
|
|
217
|
-
|
|
218
|
-
f"{TC_ROOT_URL}/api/queue/v1/task/{task_id}/artifacts/public%2Ftask-graph.json"
|
|
219
|
-
json={next(counter): task_def for task_def in task_defs},
|
|
217
|
+
url = (
|
|
218
|
+
f"{TC_ROOT_URL}/api/queue/v1/task/{task_id}/artifacts/public%2Ftask-graph.json"
|
|
220
219
|
)
|
|
220
|
+
responses.get(url, json={"url": url})
|
|
221
|
+
responses.get(url, json={next(counter): task_def for task_def in task_defs})
|
|
221
222
|
result = run_replicate(task)
|
|
222
223
|
assert result == expected
|
|
223
224
|
|
|
@@ -269,9 +270,10 @@ def test_filtered_out(responses, run_replicate, target_def):
|
|
|
269
270
|
task_defs = get_target_defs(target_def)
|
|
270
271
|
|
|
271
272
|
counter = count()
|
|
272
|
-
|
|
273
|
-
f"{TC_ROOT_URL}/api/queue/v1/task/{task_id}/artifacts/public%2Ftask-graph.json"
|
|
274
|
-
json={next(counter): task_def for task_def in task_defs},
|
|
273
|
+
url = (
|
|
274
|
+
f"{TC_ROOT_URL}/api/queue/v1/task/{task_id}/artifacts/public%2Ftask-graph.json"
|
|
275
275
|
)
|
|
276
|
+
responses.get(url, json={"url": url})
|
|
277
|
+
responses.get(url, json={next(counter): task_def for task_def in task_defs})
|
|
276
278
|
result = run_replicate(task)
|
|
277
279
|
assert len(result) == 0
|