diff --git a/taskcluster/ci/bouncer-locations-breakpoint/kind.yml b/taskcluster/ci/bouncer-locations-breakpoint/kind.yml new file mode 100644 index 000000000000..84b94041b0d5 --- /dev/null +++ b/taskcluster/ci/bouncer-locations-breakpoint/kind.yml @@ -0,0 +1,31 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +loader: taskgraph.loader.transform:loader + +transforms: + - taskgraph.transforms.bouncer_locations_breakpoint:transforms + - taskgraph.transforms.task:transforms + +job-defaults: + description: nightly bouncer locations breakpoint job + attributes: + build_platform: linux64-nightly + nightly: true + worker-type: + by-project: + mozilla-central: null-provisioner/human-breakpoint + default: invalid/invalid + worker: + implementation: bouncer-locations-breakpoint + run-on-projects: ['mozilla-central'] + treeherder: + symbol: BncLoc-Br + kind: other + tier: 2 + +jobs: + firefox: + treeherder: + platform: firefox-release/opt diff --git a/taskcluster/ci/bouncer-locations/kind.yml b/taskcluster/ci/bouncer-locations/kind.yml index ec250e462c73..7bf62577b39a 100644 --- a/taskcluster/ci/bouncer-locations/kind.yml +++ b/taskcluster/ci/bouncer-locations/kind.yml @@ -8,6 +8,9 @@ transforms: - taskgraph.transforms.bouncer_locations:transforms - taskgraph.transforms.task:transforms +kind-dependencies: + - bouncer-locations-breakpoint + job-defaults: description: nightly bouncer locations job attributes: diff --git a/taskcluster/docs/kinds.rst b/taskcluster/docs/kinds.rst index 6f70e2c8d501..064e6c57dae4 100644 --- a/taskcluster/docs/kinds.rst +++ b/taskcluster/docs/kinds.rst @@ -311,6 +311,10 @@ bouncer-locations ----------------- Updates nightly bouncer locations for version bump +bouncer-locations-breakpoint +---------------------------- +Human breakpoint to block the running of the bouncer locations job until shippable builds are implemented + release-bouncer-check --------------------- Checks Bouncer (download.mozilla.org) uptake as part of the release tasks. diff --git a/taskcluster/taskgraph/transforms/bouncer_locations.py b/taskcluster/taskgraph/transforms/bouncer_locations.py index dfe58d095372..2cdd77ab7ba4 100644 --- a/taskcluster/taskgraph/transforms/bouncer_locations.py +++ b/taskcluster/taskgraph/transforms/bouncer_locations.py @@ -28,6 +28,12 @@ def make_task_worker(config, jobs): ) job['worker']['bouncer-products'] = job['bouncer-products'] - del job['bouncer-products'] + + # chain the breakpoint as dependency to this task + dependencies = {} + for dep_task in config.kind_dependencies_tasks: + dependencies[dep_task.kind] = dep_task.label + + job.setdefault('dependencies', {}).update(dependencies) yield job diff --git a/taskcluster/taskgraph/transforms/bouncer_locations_breakpoint.py b/taskcluster/taskgraph/transforms/bouncer_locations_breakpoint.py new file mode 100644 index 000000000000..aa54ab0b7fa5 --- /dev/null +++ b/taskcluster/taskgraph/transforms/bouncer_locations_breakpoint.py @@ -0,0 +1,24 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. +from __future__ import absolute_import, print_function, unicode_literals + +import logging + +from taskgraph.transforms.base import TransformSequence +from taskgraph.util.schema import resolve_keyed_by + +logger = logging.getLogger(__name__) + + +transforms = TransformSequence() + + +@transforms.add +def make_task_worker(config, jobs): + for job in jobs: + resolve_keyed_by( + job, 'worker-type', item_name=job['name'], project=config.params['project'] + ) + job['worker']['payload'] = {} + yield job diff --git a/taskcluster/taskgraph/transforms/task.py b/taskcluster/taskgraph/transforms/task.py index bf694fbd165e..26f713842550 100644 --- a/taskcluster/taskgraph/transforms/task.py +++ b/taskcluster/taskgraph/transforms/task.py @@ -571,6 +571,9 @@ task_description_schema = Schema({ }, { Required('implementation'): 'bouncer-locations', Required('bouncer-products'): [basestring], + }, { + Required('implementation'): 'bouncer-locations-breakpoint', + Required('payload'): object, }, { Required('implementation'): 'bouncer-submission', Required('locales'): [basestring], @@ -1215,6 +1218,11 @@ def build_bouncer_locations_payload(config, task, task_def): } +@payload_builder('bouncer-locations-breakpoint') +def build_bouncer_locations_breakpoint_payload(config, task, task_def): + task_def['payload'] = task['worker']['payload'] + + @payload_builder('bouncer-submission') def build_bouncer_submission_payload(config, task, task_def): worker = task['worker']