Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/actions/release_promotion.py
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ def release_promotion_action(parameters, graph_config, input, task_group_id, tas

if promotion_config.get("partial-updates", False):
partial_updates = input.get("partial_updates", {})
if not partial_updates and release_level(parameters["project"]) == "production":
if not partial_updates and release_level(parameters) == "production":
raise Exception(
f"`partial_updates` property needs to be provided for `{release_promotion_flavor}`"
"target."
Expand Down
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/target_tasks.py
Original file line number Diff line number Diff line change
Expand Up @@ -115,7 +115,7 @@ def filter_for_repo_type(task, parameters):
def filter_for_project(task, parameters):
"""Filter tasks by project. Optionally enable nightlies."""
run_on_projects = set(task.attributes.get("run_on_projects", []))
return match_run_on_projects(parameters["project"], run_on_projects)
return match_run_on_projects(parameters, run_on_projects)


def filter_for_hg_branch(task, parameters):
Expand Down
93 changes: 66 additions & 27 deletions taskcluster/gecko_taskgraph/test/test_util_attributes.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,54 +11,79 @@
from gecko_taskgraph.util.attributes import (
match_run_on_projects,
match_run_on_repo_type,
release_level,
)


class MatchRunOnProjects(unittest.TestCase):
def test_empty(self):
self.assertFalse(match_run_on_projects("birch", []))
self.assertFalse(match_run_on_projects({"project": "birch"}, []))

def test_all(self):
self.assertTrue(match_run_on_projects("birch", ["all"]))
self.assertTrue(match_run_on_projects("larch", ["all"]))
self.assertTrue(match_run_on_projects("autoland", ["all"]))
self.assertTrue(match_run_on_projects("mozilla-central", ["all"]))
self.assertTrue(match_run_on_projects("mozilla-beta", ["all"]))
self.assertTrue(match_run_on_projects("mozilla-release", ["all"]))
self.assertTrue(match_run_on_projects({"project": "birch"}, ["all"]))
self.assertTrue(match_run_on_projects({"project": "larch"}, ["all"]))
self.assertTrue(match_run_on_projects({"project": "autoland"}, ["all"]))
self.assertTrue(match_run_on_projects({"project": "mozilla-central"}, ["all"]))
self.assertTrue(match_run_on_projects({"project": "mozilla-beta"}, ["all"]))
self.assertTrue(match_run_on_projects({"project": "mozilla-release"}, ["all"]))

def test_release(self):
self.assertFalse(match_run_on_projects("birch", ["release"]))
self.assertTrue(match_run_on_projects("larch", ["release"]))
self.assertFalse(match_run_on_projects("autoland", ["release"]))
self.assertTrue(match_run_on_projects("mozilla-central", ["release"]))
self.assertTrue(match_run_on_projects("mozilla-beta", ["release"]))
self.assertTrue(match_run_on_projects("mozilla-release", ["release"]))
self.assertFalse(match_run_on_projects({"project": "birch"}, ["release"]))
self.assertTrue(match_run_on_projects({"project": "larch"}, ["release"]))
self.assertFalse(match_run_on_projects({"project": "autoland"}, ["release"]))
self.assertTrue(
match_run_on_projects({"project": "mozilla-central"}, ["release"])
)
self.assertTrue(match_run_on_projects({"project": "mozilla-beta"}, ["release"]))
self.assertTrue(
match_run_on_projects({"project": "mozilla-release"}, ["release"])
)

def test_integration(self):
self.assertFalse(match_run_on_projects("birch", ["integration"]))
self.assertFalse(match_run_on_projects("larch", ["integration"]))
self.assertTrue(match_run_on_projects("autoland", ["integration"]))
self.assertFalse(match_run_on_projects("mozilla-central", ["integration"]))
self.assertFalse(match_run_on_projects("mozilla-beta", ["integration"]))
self.assertFalse(match_run_on_projects("mozilla-integration", ["integration"]))
self.assertFalse(match_run_on_projects({"project": "birch"}, ["integration"]))
self.assertFalse(match_run_on_projects({"project": "larch"}, ["integration"]))
self.assertTrue(match_run_on_projects({"project": "autoland"}, ["integration"]))
self.assertFalse(
match_run_on_projects({"project": "mozilla-central"}, ["integration"])
)
self.assertFalse(
match_run_on_projects({"project": "mozilla-beta"}, ["integration"])
)
self.assertFalse(
match_run_on_projects({"project": "mozilla-integration"}, ["integration"])
)

def test_combo(self):
self.assertTrue(match_run_on_projects("birch", ["release", "birch", "maple"]))
self.assertTrue(match_run_on_projects("larch", ["release", "birch", "maple"]))
self.assertTrue(match_run_on_projects("maple", ["release", "birch", "maple"]))
self.assertTrue(
match_run_on_projects({"project": "birch"}, ["release", "birch", "maple"])
)
self.assertTrue(
match_run_on_projects({"project": "larch"}, ["release", "birch", "maple"])
)
self.assertTrue(
match_run_on_projects({"project": "maple"}, ["release", "birch", "maple"])
)
self.assertFalse(
match_run_on_projects("autoland", ["release", "birch", "maple"])
match_run_on_projects(
{"project": "autoland"}, ["release", "birch", "maple"]
)
)
self.assertTrue(
match_run_on_projects("mozilla-central", ["release", "birch", "maple"])
match_run_on_projects(
{"project": "mozilla-central"}, ["release", "birch", "maple"]
)
)
self.assertTrue(
match_run_on_projects("mozilla-beta", ["release", "birch", "maple"])
match_run_on_projects(
{"project": "mozilla-beta"}, ["release", "birch", "maple"]
)
)
self.assertTrue(
match_run_on_projects("mozilla-release", ["release", "birch", "maple"])
match_run_on_projects(
{"project": "mozilla-release"}, ["release", "birch", "maple"]
)
)
self.assertTrue(match_run_on_projects("birch", ["birch", "trunk"]))
self.assertTrue(match_run_on_projects({"project": "birch"}, ["birch", "trunk"]))


@pytest.mark.parametrize(
Expand All @@ -75,5 +100,19 @@ def test_match_run_on_repo_type(repo_type, run_on_repo_types, expected):
assert match_run_on_repo_type(repo_type, run_on_repo_types) == expected


@pytest.mark.parametrize(
"params,expected",
(
({"project": "autoland"}, "staging"),
({"project": "mozilla-central"}, "production"),
({"project": "firefox", "head_ref": "refs/heads/test"}, "staging"),
({"project": "firefox", "head_ref": "refs/tags/beta"}, "staging"),
({"project": "firefox", "head_ref": "refs/heads/beta"}, "production"),
),
)
def test_release_level(params, expected):
assert release_level(params) == expected


if __name__ == "__main__":
main()
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ def resolve_keys(config, jobs):
job,
"bucket-scope",
item_name=job["label"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
yield job

Expand Down
4 changes: 2 additions & 2 deletions taskcluster/gecko_taskgraph/transforms/bouncer_aliases.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ def make_task_worker(config, jobs):
job,
"worker-type",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
"scopes",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
Expand Down
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/transforms/bouncer_check.py
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ def handle_keyed_by(config, jobs):
item_name=job["name"],
**{
"project": config.params["project"],
"release-level": release_level(config.params["project"]),
"release-level": release_level(config.params),
"release-type": config.params["release_type"],
},
)
Expand Down
4 changes: 2 additions & 2 deletions taskcluster/gecko_taskgraph/transforms/bouncer_submission.py
Original file line number Diff line number Diff line change
Expand Up @@ -132,13 +132,13 @@ def make_task_worker(config, jobs):
job,
"worker-type",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
"scopes",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,13 +71,13 @@ def make_task_worker(config, jobs):
job,
"worker-type",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
"scopes",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
Expand Down
4 changes: 2 additions & 2 deletions taskcluster/gecko_taskgraph/transforms/build.py
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ def resolve_keys(config, jobs):
job,
"use-sccache",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
yield job

Expand Down Expand Up @@ -246,7 +246,7 @@ def add_signing_artifacts(config, jobs):
"""
Add signing artifacts to macOS build jobs.
"""
is_prod_project = release_level(config.params["project"]) == "production"
is_prod_project = release_level(config.params) == "production"
for job in jobs:
if "macosx" not in job["name"] or "searchfox" in job["name"]:
# Not macosx build or no artifacts defined, so skip
Expand Down
4 changes: 2 additions & 2 deletions taskcluster/gecko_taskgraph/transforms/hardened_signing.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def add_hardened_sign_config(config, jobs):

dep_job = get_primary_dependency(config, job)
assert dep_job
project_level = release_level(config.params["project"])
project_level = release_level(config.params)
is_shippable = dep_job.attributes.get("shippable", False)
hardened_signing_type = "developer"

Expand Down Expand Up @@ -80,7 +80,7 @@ def add_provisioning_profile_config(config, jobs):
# Ensure macosx platform
and "macosx" in job["attributes"]["build_platform"]
# Ensure project is considered production
and release_level(config.params["project"]) == "production"
and release_level(config.params) == "production"
# Ensure build is shippable
and dep_job.attributes.get("shippable", False)
# Ensure not dep-signing
Expand Down
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/transforms/maybe_release.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,6 @@ def make_task_description(config, jobs):
job,
key,
item_name=job["name"],
**{"release-level": release_level(config.params["project"])}
**{"release-level": release_level(config.params)}
)
yield job
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/transforms/partials.py
Original file line number Diff line number Diff line change
Expand Up @@ -150,7 +150,7 @@ def make_task_description(config, jobs):
"MAR_CHANNEL_ID": attributes["mar-channel-id"],
},
}
if release_level(config.params["project"]) == "staging":
if release_level(config.params) == "staging":
worker["env"]["FUNSIZE_ALLOW_STAGING_PREFIXES"] = "true"

task = {
Expand Down
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/transforms/partner_repack.py
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ def populate_repack_manifests_url(config, tasks):
task,
property,
property,
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)

if task["worker"]["env"]["REPACK_MANIFESTS_URL"].startswith("git@"):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ def resolve_keys(config, jobs):
field,
item_name=job["label"],
**{
"release-level": release_level(config.params["project"]),
"release-level": release_level(config.params),
"release-type": config.params["release_type"],
"project": config.params["project"],
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ def make_task_description(config, jobs):
job,
"worker-type",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
if release_level(config.params["project"]) == "production":
if release_level(config.params) == "production":
job.setdefault("scopes", []).append(
add_scope_prefix(
config,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ def handle_keyed_by(config, jobs):
item=job,
field=field,
item_name=job["name"],
**{"release-level": release_level(config.params["project"])}
**{"release-level": release_level(config.params)}
)
yield job

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,13 +19,13 @@ def make_task_description(config, jobs):
job,
"worker-type",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])}
**{"release-level": release_level(config.params)}
)
resolve_keyed_by(
job,
"scopes",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])}
**{"release-level": release_level(config.params)}
)

job["worker"]["release-name"] = (
Expand Down
4 changes: 2 additions & 2 deletions taskcluster/gecko_taskgraph/transforms/release_msix_push.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,9 @@ def make_task_description(config, jobs):
job,
"worker-type",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
if release_level(config.params["project"]) == "production":
if release_level(config.params) == "production":
job.setdefault("scopes", []).append(
add_scope_prefix(
config,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,13 @@ def resolve_keys(config, jobs):
job,
"worker-type",
item_name=job["label"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
"scopes",
item_name=job["label"],
**{"release-level": release_level(config.params["project"])},
**{"release-level": release_level(config.params)},
)
resolve_keyed_by(
job,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,7 @@ def format(config, tasks):
env = task.get("worker", {}).get("env", {})
for k in env.keys():
resolve_keyed_by(
env,
k,
"snap envs",
**{"release-level": release_level(config.params["project"])}
env, k, "snap envs", **{"release-level": release_level(config.params)}
)
task["worker"]["env"][k] = env[k].format(**format_params)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ def make_task_worker(config, jobs):
job,
"scopes",
item_name=job["name"],
**{"release-level": release_level(config.params["project"])}
**{"release-level": release_level(config.params)}
)
job["worker"]["product"] = job["shipping-product"]
job["worker"]["version"] = config.params["version"]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def repackage_set_upstream_mac_kind(config, tasks):
item_name=config.kind,
**{
"build-platform": primary_dep.attributes["build_platform"],
"release-level": release_level(config.params["project"]),
"release-level": release_level(config.params),
}
)
upstream_mac_kind = task.pop("upstream-mac-kind")
Expand Down
2 changes: 1 addition & 1 deletion taskcluster/gecko_taskgraph/transforms/task.py
Original file line number Diff line number Diff line change
Expand Up @@ -1145,7 +1145,7 @@ def build_balrog_payload(config, task, task_def):
task["description"],
**{
"release-type": config.params["release_type"],
"release-level": release_level(config.params["project"]),
"release-level": release_level(config.params),
"beta-number": beta_number,
},
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ def add_command(config, tasks):
platform=task["attributes"]["build_platform"],
**{
"release-type": config.params["release_type"],
"release-level": release_level(config.params["project"]),
"release-level": release_level(config.params),
},
)
# ignore things that resolved to null
Expand Down
Loading
Loading