None, Required('worker'): object, Required('treeherder'): object, Required('run-on-projects'): list, Required('deadline-after'): basestring, }) validate_jobs_schema_transform = functools.partial( validate_jobs_schema_transform_partial, push_apk_breakpoint_description_schema, 'PushApkBreakpoint') transforms.add(fill_labels_tranform) transforms.add(validate_jobs_schema_transform) transforms.add(validate_dependent_tasks_transform) @transforms.add def make_task_description(config, jobs): for job in jobs: job['dependencies'] = generate_dependencies(job['dependent-tasks']) worker_type = get_push_apk_breakpoint_worker_type(config) job['worker-type'] = worker_type job['worker']['payload'] = {} if 'human' in worker_type else { 'image': 'ubuntu:16.10',
Transform the partner repack task into an actual task description. """ from __future__ import absolute_import, print_function, unicode_literals from taskgraph.transforms.base import TransformSequence from taskgraph.util.schema import resolve_keyed_by from taskgraph.util.scriptworker import get_release_config from taskgraph.util.partners import ( check_if_partners_enabled, get_partner_url_config, apply_partner_priority, ) transforms = TransformSequence() transforms.add(apply_partner_priority) @transforms.add def populate_repack_manifests_url(config, tasks): for task in tasks: partner_url_config = get_partner_url_config(config.params, config.graph_config) for k in partner_url_config: if config.kind.startswith(k): task['worker'].setdefault('env', {})['REPACK_MANIFESTS_URL'] = \ partner_url_config[k] break else: raise Exception("Can't find partner REPACK_MANIFESTS_URL")
# 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/. """ Transform the signing task into an actual task description. """ from __future__ import absolute_import, print_function, unicode_literals from taskgraph.transforms.base import TransformSequence from taskgraph.util.attributes import copy_attributes_from_dependent_job from taskgraph.util.partners import (get_partner_config_by_kind, check_if_partners_enabled) from taskgraph.util.signed_artifacts import generate_specifications_of_artifacts_to_sign transforms = TransformSequence() transforms.add(check_if_partners_enabled) @transforms.add def set_mac_label(config, jobs): for job in jobs: dep_job = job['primary-dependency'] job.setdefault('label', dep_job.label.replace('notarization-part-1', 'signing')) assert job['label'] != dep_job.label, "Unable to determine label for {}".format( config.kind ) yield job @transforms.add def define_upstream_artifacts(config, jobs):
Required('attributes'): object, Required('treeherder'): object, Required('run-on-projects'): list, Required('worker-type'): basestring, Required('worker'): object, Required('scopes'): None, Required('deadline-after'): basestring, }) validate_jobs_schema_transform = functools.partial( validate_jobs_schema_transform_partial, push_apk_description_schema, 'PushApk' ) transforms.add(fill_labels_tranform) transforms.add(validate_jobs_schema_transform) transforms.add(validate_dependent_tasks_transform) @transforms.add def make_task_description(config, jobs): for job in jobs: job['dependencies'] = generate_dependencies(job['dependent-tasks']) job['worker']['upstream-artifacts'] = generate_upstream_artifacts(job['dependencies']) job['worker']['google-play-track'] = get_push_apk_track(config) job['worker']['dry-run'] = get_push_apk_dry_run_option(config) rollout_percentage = get_push_apk_rollout_percentage(config) if rollout_percentage is not None: job['worker']['rollout-percentage'] = rollout_percentage
Required('treeherder'): task_description_schema['treeherder'], Required('package-name'): optionally_keyed_by('project', basestring), Required('run-on-projects'): task_description_schema['run-on-projects'], Required('worker-type'): basestring, Required('worker'): object, Required('shipping-phase'): task_description_schema['shipping-phase'], Required('shipping-product'): task_description_schema['shipping-product'], })) transforms.add(validate_dependent_tasks) transforms.add(set_worker_data) @transforms.add def make_task_description(config, jobs): for job in jobs: job['dependencies'] = generate_dependencies(job['dependent-tasks']) dependencies_labels = job['dependencies'].keys() resolve_keyed_by(job, 'package-name', item_name=job['name'], project=config.params['project']) commands = [
Chunk the partner repack tasks by subpartner and locale """ from __future__ import absolute_import, print_function, unicode_literals import copy from mozbuild.chunkify import chunkify from taskgraph.transforms.base import TransformSequence from taskgraph.util.partners import ( get_repack_ids_by_platform, apply_partner_priority, ) transforms = TransformSequence() transforms.add(apply_partner_priority) @transforms.add def chunk_partners(config, jobs): for job in jobs: dep_job = job["primary-dependency"] build_platform = dep_job.attributes["build_platform"] repack_id = dep_job.task.get("extra", {}).get("repack_id") repack_ids = dep_job.task.get("extra", {}).get("repack_ids") copy_repack_ids = job.pop("copy-repack-ids", False) if copy_repack_ids: assert repack_ids, "dep_job {} doesn't have repack_ids!".format( dep_job.label) job.setdefault("extra", {})["repack_ids"] = repack_ids
] check_apks_command = ( 'python3 ./mozapkpublisher/check_apks.py --expected-package-name "{}" {}' .format( job['package-name'], ' '.join([ '"<{}>.apk"'.format(task_label) for task_label in dependencies_labels ]))) commands.append(check_apks_command) job['worker']['command'] = [ '/bin/bash', '-cx', { 'task-reference': ' && '.join(commands) }, ] yield job @transforms.add def delete_non_required_fields_(config, jobs): for job in jobs: del job['package-name'] yield job transforms.add(delete_non_required_fields)
Required('attributes'): task_description_schema['attributes'], Required('treeherder'): task_description_schema['treeherder'], Required('run-on-projects'): task_description_schema['run-on-projects'], Required('shipping-phase'): task_description_schema['shipping-phase'], Required('shipping-product'): task_description_schema['shipping-product'], Required('worker-type'): task_description_schema['worker-type'], Required('worker'): object, }) validate_jobs_schema_transform = functools.partial( validate_jobs_schema_transform_partial, google_play_description_schema, 'GooglePlayStrings' ) transforms.add(fill_labels_tranform) transforms.add(validate_jobs_schema_transform) @transforms.add def set_worker_data(config, jobs): for job in jobs: worker = job['worker'] env = worker.setdefault('env', {}) resolve_keyed_by( env, 'PACKAGE_NAME', item_name=job['name'], project=config.params['project'] ) yield job