def make_task_description(config, jobs): for job in jobs: dep_job = job['dependent-task'] treeherder = job.get('treeherder', {}) treeherder.setdefault('symbol', 'ps(N)') dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') label = job.get('label', "partials-signing-{}".format(dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependent_kind = str(dep_job.kind) dependencies = {dependent_kind: dep_job.label} signing_dependencies = dep_job.dependencies # This is so we get the build task etc in our dependencies to # have better beetmover support. dependencies.update(signing_dependencies) attributes = copy_attributes_from_dependent_job(dep_job) locale = dep_job.attributes.get('locale') if locale: attributes['locale'] = locale treeherder['symbol'] = 'ps({})'.format(locale) balrog_platform = get_balrog_platform_name(dep_th_platform) upstream_artifacts = generate_upstream_artifacts( dep_job, config.params['release_history'], balrog_platform, locale) build_platform = dep_job.attributes.get('build_platform') is_nightly = dep_job.attributes.get('nightly') signing_cert_scope = get_signing_cert_scope_per_platform( build_platform, is_nightly, config ) scopes = [signing_cert_scope, 'project:releng:signing:format:autograph_hash_only_mar384'] if any("mar" in upstream_details["formats"] for upstream_details in upstream_artifacts): scopes.append('project:releng:signing:format:mar') task = { 'label': label, 'description': "{} Partials".format( dep_job.task["metadata"]["description"]), 'worker-type': get_worker_type_for_scope(config, signing_cert_scope), 'worker': {'implementation': 'scriptworker-signing', 'upstream-artifacts': upstream_artifacts, 'max-run-time': 3600}, 'dependencies': dependencies, 'attributes': attributes, 'scopes': scopes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, } yield task
def make_task_description(config, jobs): for job in jobs: dep_job = job['dependent-task'] treeherder = job.get('treeherder', {}) treeherder.setdefault('symbol', 'ps(N)') dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') label = job.get('label', "partials-signing-{}".format(dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependent_kind = str(dep_job.kind) dependencies = {dependent_kind: dep_job.label} signing_dependencies = dep_job.dependencies # This is so we get the build task etc in our dependencies to # have better beetmover support. dependencies.update(signing_dependencies) attributes = copy_attributes_from_dependent_job(dep_job) locale = dep_job.attributes.get('locale') if locale: attributes['locale'] = locale treeherder['symbol'] = 'ps({})'.format(locale) balrog_platform = get_balrog_platform_name(dep_th_platform) upstream_artifacts = generate_upstream_artifacts( config.params['release_history'], balrog_platform, locale) build_platform = dep_job.attributes.get('build_platform') is_nightly = dep_job.attributes.get('nightly') signing_cert_scope = get_signing_cert_scope_per_platform( build_platform, is_nightly, config ) scopes = [signing_cert_scope, 'project:releng:signing:format:mar_sha384'] task = { 'label': label, 'description': "{} Partials".format( dep_job.task["metadata"]["description"]), 'worker-type': 'scriptworker-prov-v1/signing-linux-v1', 'worker': {'implementation': 'scriptworker-signing', 'upstream-artifacts': upstream_artifacts, 'max-run-time': 3600}, 'dependencies': dependencies, 'attributes': attributes, 'scopes': scopes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, } yield task
def make_partials_artifacts(config, jobs): for job in jobs: locale = job["attributes"].get("locale") if not locale: locale = 'en-US' # Remove when proved reliable # job['treeherder']['tier'] = 3 platform = job["attributes"]["build_platform"] balrog_platform = get_balrog_platform_name(platform) artifacts = get_partials_artifacts(config.params.get('release_history'), balrog_platform, locale) # Dependency: | repackage-signing | partials-signing # Partials artifacts | Skip | Populate & yield # No partials | Yield | continue if len(artifacts) == 0: if 'partials-signing' in job['dependencies']: continue else: yield job continue else: if 'partials-signing' not in job['dependencies']: continue upstream_artifacts = generate_partials_upstream_artifacts( job, artifacts, balrog_platform, locale ) job['worker']['upstream-artifacts'].extend(upstream_artifacts) extra = list() artifact_map = get_partials_artifact_map( config.params.get('release_history'), balrog_platform, locale) for artifact in artifact_map: artifact_extra = { 'locale': locale, 'artifact_name': artifact, 'buildid': artifact_map[artifact]['buildid'], 'platform': balrog_platform, } for rel_attr in ('previousBuildNumber', 'previousVersion'): if artifact_map[artifact].get(rel_attr): artifact_extra[rel_attr] = artifact_map[artifact][rel_attr] extra.append(artifact_extra) job.setdefault('extra', {}) job['extra']['partials'] = extra yield job
def make_partials_artifacts(config, jobs): for job in jobs: locale = job["attributes"].get("locale") if not locale: locale = 'en-US' # Remove when proved reliable # job['treeherder']['tier'] = 3 platform = job["attributes"]["build_platform"] balrog_platform = get_balrog_platform_name(platform) artifacts = get_partials_artifacts(config.params.get('release_history'), balrog_platform, locale) # Dependency: | repackage-signing | partials-signing # Partials artifacts | Skip | Populate & yield # No partials | Yield | continue if len(artifacts) == 0: if 'partials-signing' in job['dependencies']: continue else: yield job continue else: if 'partials-signing' not in job['dependencies']: continue upstream_artifacts = generate_partials_upstream_artifacts( artifacts, balrog_platform, locale ) job['worker']['upstream-artifacts'].extend(upstream_artifacts) extra = list() artifact_map = get_partials_artifact_map( config.params.get('release_history'), balrog_platform, locale) for artifact in artifact_map: artifact_extra = { 'locale': locale, 'artifact_name': artifact, 'buildid': artifact_map[artifact]['buildid'], 'platform': balrog_platform, } for rel_attr in ('previousBuildNumber', 'previousVersion'): if artifact_map[artifact].get(rel_attr): artifact_extra[rel_attr] = artifact_map[artifact][rel_attr] extra.append(artifact_extra) job.setdefault('extra', {}) job['extra']['partials'] = extra yield job
def make_partials_artifacts(config, jobs): for job in jobs: locale = job["attributes"].get("locale") if not locale: locale = 'en-US' platform = job["attributes"]["build_platform"] if 'partials-signing' not in job['dependencies']: yield job continue balrog_platform = get_balrog_platform_name(platform) artifacts = get_partials_artifacts_from_params( config.params.get('release_history'), balrog_platform, locale) upstream_artifacts = generate_partials_upstream_artifacts( job, artifacts, balrog_platform, locale) job['worker']['upstream-artifacts'].extend(upstream_artifacts) extra = list() partials_info = get_partials_info_from_params( config.params.get('release_history'), balrog_platform, locale) if should_use_artifact_map(platform): job['worker']['artifact-map'].extend( generate_beetmover_partials_artifact_map(config, job, partials_info, platform=platform, locale=locale)) for artifact in partials_info: artifact_extra = { 'locale': locale, 'artifact_name': artifact, 'buildid': partials_info[artifact]['buildid'], 'platform': balrog_platform, } for rel_attr in ('previousBuildNumber', 'previousVersion'): if partials_info[artifact].get(rel_attr): artifact_extra[rel_attr] = partials_info[artifact][ rel_attr] extra.append(artifact_extra) job.setdefault('extra', {}) job['extra']['partials'] = extra yield job
def make_partials_artifacts(config, jobs): for job in jobs: locale = job["attributes"].get("locale") if not locale: locale = "en-US" platform = job["attributes"]["build_platform"] if "partials-signing" not in job["dependencies"]: yield job continue balrog_platform = get_balrog_platform_name(platform) artifacts = get_partials_artifacts_from_params( config.params.get("release_history"), balrog_platform, locale) upstream_artifacts = generate_partials_upstream_artifacts( job, artifacts, balrog_platform, locale) job["worker"]["upstream-artifacts"].extend(upstream_artifacts) extra = list() partials_info = get_partials_info_from_params( config.params.get("release_history"), balrog_platform, locale) job["worker"]["artifact-map"].extend( generate_beetmover_partials_artifact_map(config, job, partials_info, platform=platform, locale=locale)) for artifact in partials_info: artifact_extra = { "locale": locale, "artifact_name": artifact, "buildid": partials_info[artifact]["buildid"], "platform": balrog_platform, } for rel_attr in ("previousBuildNumber", "previousVersion"): if partials_info[artifact].get(rel_attr): artifact_extra[rel_attr] = partials_info[artifact][ rel_attr] extra.append(artifact_extra) job.setdefault("extra", {}) job["extra"]["partials"] = extra yield job
def make_task_description(config, jobs): # If no balrog release history, then don't generate partials if not config.params.get('release_history'): return for job in jobs: dep_job = job['dependent-task'] treeherder = job.get('treeherder', {}) treeherder.setdefault('symbol', 'p(N)') label = job.get('label', "partials-{}".format(dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependent_kind = str(dep_job.kind) dependencies = {dependent_kind: dep_job.label} signing_dependencies = dep_job.dependencies # This is so we get the build task etc in our dependencies to # have better beetmover support. dependencies.update(signing_dependencies) attributes = copy_attributes_from_dependent_job(dep_job) locale = dep_job.attributes.get('locale') if locale: attributes['locale'] = locale treeherder['symbol'] = "p({})".format(locale) build_locale = locale or 'en-US' builds = get_builds(config.params['release_history'], dep_th_platform, build_locale) # If the list is empty there's no available history for this platform # and locale combination, so we can't build any partials. if not builds: continue signing_task = None for dependency in sorted(dependencies.keys()): if 'repackage-signing' in dependency: signing_task = dependency break signing_task_ref = '<{}>'.format(signing_task) extra = {'funsize': {'partials': list()}} update_number = 1 artifact_path = "{}{}".format( get_taskcluster_artifact_prefix(signing_task_ref, locale=locale), 'target.complete.mar') for build in sorted(builds): partial_info = { 'locale': build_locale, 'from_mar': builds[build]['mar_url'], 'to_mar': { 'task-reference': artifact_path }, 'platform': get_balrog_platform_name(dep_th_platform), 'branch': config.params['project'], 'update_number': update_number, 'dest_mar': build, } if 'product' in builds[build]: partial_info['product'] = builds[build]['product'] if 'previousVersion' in builds[build]: partial_info['previousVersion'] = builds[build][ 'previousVersion'] if 'previousBuildNumber' in builds[build]: partial_info['previousBuildNumber'] = builds[build][ 'previousBuildNumber'] extra['funsize']['partials'].append(partial_info) update_number += 1 cot = extra.setdefault('chainOfTrust', {}) cot.setdefault('inputs', {})['docker-image'] = { "task-reference": "<docker-image>" } mar_channel_id = None if config.params['project'] == 'mozilla-beta': if 'devedition' in label: mar_channel_id = 'firefox-mozilla-aurora' else: mar_channel_id = 'firefox-mozilla-beta' elif config.params['project'] == 'mozilla-release': mar_channel_id = 'firefox-mozilla-release' elif 'esr' in config.params['project']: mar_channel_id = 'firefox-mozilla-esr' worker = { 'artifacts': _generate_task_output_files(builds.keys(), locale), 'implementation': 'docker-worker', 'docker-image': { 'in-tree': 'funsize-update-generator' }, 'os': 'linux', 'max-run-time': 3600, 'chain-of-trust': True, 'taskcluster-proxy': True, 'env': { 'SHA1_SIGNING_CERT': 'nightly_sha1', 'SHA384_SIGNING_CERT': 'nightly_sha384', 'DATADOG_API_SECRET': 'project/releng/gecko/build/level-3/datadog-api-key' } } if mar_channel_id: worker['env']['ACCEPTED_MAR_CHANNEL_IDS'] = mar_channel_id level = config.params['level'] task = { 'label': label, 'description': "{} Partials".format(dep_job.task["metadata"]["description"]), 'worker-type': 'aws-provisioner-v1/gecko-%s-b-linux' % level, 'dependencies': dependencies, 'scopes': [ 'secrets:get:project/releng/gecko/build/level-%s/datadog-api-key' % level, 'auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/' ], 'attributes': attributes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, 'extra': extra, 'worker': worker, } yield task
def make_task_description(config, jobs): for job in jobs: dep_job = job['primary-dependency'] locale = dep_job.attributes.get('locale') treeherder = job.get('treeherder', {}) treeherder.setdefault( 'symbol', join_symbol(job.get('treeherder-group', 'ms'), locale or 'N')) label = job.get('label', "{}-{}".format(config.kind, dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependencies = {dep_job.kind: dep_job.label} signing_dependencies = dep_job.dependencies # This is so we get the build task etc in our dependencies to # have better beetmover support. dependencies.update(signing_dependencies) attributes = copy_attributes_from_dependent_job(dep_job) attributes['required_signoffs'] = sorted_unique_list( attributes.get('required_signoffs', []), job.pop('required_signoffs')) attributes['shipping_phase'] = job['shipping-phase'] if locale: attributes['locale'] = locale balrog_platform = get_balrog_platform_name(dep_th_platform) if config.kind == 'partials-signing': upstream_artifacts = generate_partials_artifacts( dep_job, config.params['release_history'], balrog_platform, locale) else: upstream_artifacts = generate_complete_artifacts( dep_job, config.kind) build_platform = dep_job.attributes.get('build_platform') is_nightly = job.get( 'nightly', # First check current job dep_job.attributes.get( 'nightly', # Then dep job for 'nightly' dep_job.attributes.get( 'shippable'))) # lastly dep job for 'shippable' signing_cert_scope = get_signing_cert_scope_per_platform( build_platform, is_nightly, config) scopes = [signing_cert_scope] task = { 'label': label, 'description': "{} {}".format(dep_job.task["metadata"]["description"], job['description-suffix']), 'worker-type': get_worker_type_for_scope(config, signing_cert_scope), 'worker': { 'implementation': 'scriptworker-signing', 'upstream-artifacts': upstream_artifacts, 'max-run-time': 3600 }, 'dependencies': dependencies, 'attributes': attributes, 'scopes': scopes, 'run-on-projects': job.get('run-on-projects', dep_job.attributes.get('run_on_projects')), 'treeherder': treeherder, } yield task
def make_task_description(config, jobs): # If no balrog release history, then don't generate partials if not config.params.get('release_history'): return for job in jobs: dep_job = job['primary-dependency'] treeherder = job.get('treeherder', {}) treeherder.setdefault('symbol', 'p(N)') label = job.get('label', "partials-{}".format(dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependencies = {dep_job.kind: dep_job.label} attributes = copy_attributes_from_dependent_job(dep_job) locale = dep_job.attributes.get('locale') if locale: attributes['locale'] = locale treeherder['symbol'] = "p({})".format(locale) attributes['shipping_phase'] = job['shipping-phase'] build_locale = locale or 'en-US' builds = get_builds(config.params['release_history'], dep_th_platform, build_locale) # If the list is empty there's no available history for this platform # and locale combination, so we can't build any partials. if not builds: continue extra = {'funsize': {'partials': list()}} update_number = 1 locale_suffix = '' if locale: locale_suffix = '{}/'.format(locale) artifact_path = "<{}/{}/{}target.complete.mar>".format( dep_job.kind, get_artifact_prefix(dep_job), locale_suffix, ) for build in sorted(builds): partial_info = { 'locale': build_locale, 'from_mar': builds[build]['mar_url'], 'to_mar': { 'artifact-reference': artifact_path }, 'platform': get_balrog_platform_name(dep_th_platform), 'branch': config.params['project'], 'update_number': update_number, 'dest_mar': build, } if 'product' in builds[build]: partial_info['product'] = builds[build]['product'] if 'previousVersion' in builds[build]: partial_info['previousVersion'] = builds[build][ 'previousVersion'] if 'previousBuildNumber' in builds[build]: partial_info['previousBuildNumber'] = builds[build][ 'previousBuildNumber'] extra['funsize']['partials'].append(partial_info) update_number += 1 mar_channel_id = None if config.params['project'] == 'mozilla-beta': if 'devedition' in label: mar_channel_id = 'firefox-mozilla-aurora' else: mar_channel_id = 'firefox-mozilla-beta' elif config.params['project'] == 'mozilla-release': mar_channel_id = 'firefox-mozilla-release' elif 'esr' in config.params['project']: mar_channel_id = 'firefox-mozilla-esr' level = config.params['level'] worker = { 'artifacts': _generate_task_output_files(dep_job, builds.keys(), locale), 'implementation': 'docker-worker', 'docker-image': { 'in-tree': 'funsize-update-generator' }, 'os': 'linux', 'max-run-time': 3600 if 'asan' in dep_job.label else 600, 'chain-of-trust': True, 'taskcluster-proxy': True, 'env': { 'SHA1_SIGNING_CERT': 'nightly_sha1', 'SHA384_SIGNING_CERT': 'nightly_sha384', 'DATADOG_API_SECRET': 'project/releng/gecko/build/level-{}/datadog-api-key'.format( level), 'EXTRA_PARAMS': '--arch={}'.format(architecture(attributes['build_platform'])), } } if mar_channel_id: worker['env']['ACCEPTED_MAR_CHANNEL_IDS'] = mar_channel_id if config.params.release_level() == 'staging': worker['env']['FUNSIZE_ALLOW_STAGING_PREFIXES'] = 'true' task = { 'label': label, 'description': "{} Partials".format(dep_job.task["metadata"]["description"]), 'worker-type': 'aws-provisioner-v1/gecko-%s-b-linux' % level, 'dependencies': dependencies, 'scopes': [ 'secrets:get:project/releng/gecko/build/level-%s/datadog-api-key' % level ], 'attributes': attributes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, 'extra': extra, 'worker': worker, } # We only want caching on linux/windows due to bug 1436977 if int(level) == 3 \ and any([platform in dep_th_platform for platform in ['linux', 'windows']]): task['scopes'].append( 'auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/' ) yield task
def make_task_description(config, jobs): # If no balrog release history, then don't generate partials if not config.params.get('release_history'): return for job in jobs: dep_job = job['dependent-task'] treeherder = job.get('treeherder', {}) treeherder.setdefault('symbol', 'p(N)') label = job.get('label', "partials-{}".format(dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependent_kind = str(dep_job.kind) dependencies = {dependent_kind: dep_job.label} signing_dependencies = dep_job.dependencies # This is so we get the build task etc in our dependencies to # have better beetmover support. dependencies.update(signing_dependencies) attributes = copy_attributes_from_dependent_job(dep_job) locale = dep_job.attributes.get('locale') if locale: attributes['locale'] = locale treeherder['symbol'] = "p({})".format(locale) build_locale = locale or 'en-US' builds = get_builds(config.params['release_history'], dep_th_platform, build_locale) # If the list is empty there's no available history for this platform # and locale combination, so we can't build any partials. if not builds: continue signing_task = None for dependency in sorted(dependencies.keys()): if 'repackage-signing' in dependency: signing_task = dependency break signing_task_ref = '<{}>'.format(signing_task) extra = {'funsize': {'partials': list()}} update_number = 1 artifact_path = "{}{}".format( get_taskcluster_artifact_prefix(signing_task_ref, locale=locale), 'target.complete.mar') for build in builds: extra['funsize']['partials'].append({ 'locale': build_locale, 'from_mar': builds[build]['mar_url'], 'to_mar': { 'task-reference': artifact_path }, 'platform': get_balrog_platform_name(dep_th_platform), 'branch': config.params['project'], 'update_number': update_number, 'dest_mar': build, }) update_number += 1 cot = extra.setdefault('chainOfTrust', {}) cot.setdefault('inputs', {})['docker-image'] = { "task-reference": "<docker-image>" } worker = { 'artifacts': _generate_task_output_files(builds.keys(), locale), 'implementation': 'docker-worker', 'docker-image': { 'in-tree': 'funsize-update-generator' }, 'os': 'linux', 'max-run-time': 3600, 'chain-of-trust': True, 'env': { 'SHA1_SIGNING_CERT': 'nightly_sha1', 'SHA384_SIGNING_CERT': 'nightly_sha384' } } level = config.params['level'] task = { 'label': label, 'description': "{} Partials".format(dep_job.task["metadata"]["description"]), 'worker-type': 'aws-provisioner-v1/gecko-%s-b-linux' % level, 'dependencies': dependencies, 'attributes': attributes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, 'extra': extra, 'worker': worker, } yield task
def make_task_description(config, jobs): # If no balrog release history, then don't generate partials if not config.params.get('release_history'): return for job in jobs: dep_job = job['dependent-task'] treeherder = job.get('treeherder', {}) treeherder.setdefault('symbol', 'p(N)') label = job.get('label', "partials-{}".format(dep_job.label)) dep_th_platform = dep_job.task.get('extra', {}).get( 'treeherder', {}).get('machine', {}).get('platform', '') treeherder.setdefault('platform', "{}/opt".format(dep_th_platform)) treeherder.setdefault('kind', 'build') treeherder.setdefault('tier', 1) dependent_kind = str(dep_job.kind) dependencies = {dependent_kind: dep_job.label} signing_dependencies = dep_job.dependencies # This is so we get the build task etc in our dependencies to # have better beetmover support. dependencies.update(signing_dependencies) attributes = copy_attributes_from_dependent_job(dep_job) locale = dep_job.attributes.get('locale') if locale: attributes['locale'] = locale treeherder['symbol'] = "p({})".format(locale) build_locale = locale or 'en-US' builds = get_builds(config.params['release_history'], dep_th_platform, build_locale) # If the list is empty there's no available history for this platform # and locale combination, so we can't build any partials. if not builds: continue signing_task = None for dependency in sorted(dependencies.keys()): if 'repackage-signing' in dependency: signing_task = dependency break signing_task_ref = '<{}>'.format(signing_task) extra = {'funsize': {'partials': list()}} update_number = 1 artifact_path = "{}{}".format( get_taskcluster_artifact_prefix(signing_task_ref, locale=locale), 'target.complete.mar' ) for build in sorted(builds): partial_info = { 'locale': build_locale, 'from_mar': builds[build]['mar_url'], 'to_mar': {'task-reference': artifact_path}, 'platform': get_balrog_platform_name(dep_th_platform), 'branch': config.params['project'], 'update_number': update_number, 'dest_mar': build, } if 'product' in builds[build]: partial_info['product'] = builds[build]['product'] if 'previousVersion' in builds[build]: partial_info['previousVersion'] = builds[build]['previousVersion'] if 'previousBuildNumber' in builds[build]: partial_info['previousBuildNumber'] = builds[build]['previousBuildNumber'] extra['funsize']['partials'].append(partial_info) update_number += 1 mar_channel_id = None if config.params['project'] == 'mozilla-beta': if 'devedition' in label: mar_channel_id = 'firefox-mozilla-aurora' else: mar_channel_id = 'firefox-mozilla-beta' elif config.params['project'] == 'mozilla-release': mar_channel_id = 'firefox-mozilla-release' elif 'esr' in config.params['project']: mar_channel_id = 'firefox-mozilla-esr' worker = { 'artifacts': _generate_task_output_files(builds.keys(), locale), 'implementation': 'docker-worker', 'docker-image': {'in-tree': 'funsize-update-generator'}, 'os': 'linux', 'max-run-time': 3600, 'chain-of-trust': True, 'taskcluster-proxy': True, 'env': { 'SHA1_SIGNING_CERT': 'nightly_sha1', 'SHA384_SIGNING_CERT': 'nightly_sha384', 'DATADOG_API_SECRET': 'project/releng/gecko/build/level-3/datadog-api-key' } } if mar_channel_id: worker['env']['ACCEPTED_MAR_CHANNEL_IDS'] = mar_channel_id level = config.params['level'] task = { 'label': label, 'description': "{} Partials".format( dep_job.task["metadata"]["description"]), 'worker-type': 'aws-provisioner-v1/gecko-%s-b-linux' % level, 'dependencies': dependencies, 'scopes': [ 'secrets:get:project/releng/gecko/build/level-%s/datadog-api-key' % level, 'auth:aws-s3:read-write:tc-gp-private-1d-us-east-1/releng/mbsdiff-cache/' ], 'attributes': attributes, 'run-on-projects': dep_job.attributes.get('run_on_projects'), 'treeherder': treeherder, 'extra': extra, 'worker': worker, } yield task