def make_task_worker(config, jobs): for job in jobs: locale = job["attributes"].get("locale") platform = job["attributes"]["build_platform"] if should_use_artifact_map(platform): upstream_artifacts = generate_beetmover_upstream_artifacts( config, job, platform, locale) else: upstream_artifacts = generate_upstream_artifacts( config, job, job['dependencies'], platform, locale, project=config.params['project'] ) worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), 'upstream-artifacts': upstream_artifacts, } if should_use_artifact_map(platform): worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform, locale=locale) if locale: worker["locale"] = locale job["worker"] = worker yield job
def make_task_worker(config, jobs): for job in jobs: signing_task_ref = get_upstream_task_ref( job, expected_kinds=('release-sign-and-push-langpacks', )) platform = job["attributes"]["build_platform"] locale = job["attributes"]["chunk_locales"] if should_use_artifact_map(platform): upstream_artifacts = generate_beetmover_upstream_artifacts( config, job, platform, locale, ) else: upstream_artifacts = generate_upstream_artifacts( signing_task_ref, job['attributes']['chunk_locales']) job['worker'] = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), 'upstream-artifacts': upstream_artifacts, } if should_use_artifact_map(platform): job['worker']['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform, locale=locale) yield job
def make_beetmover_checksums_worker(config, jobs): for job in jobs: locale = job["attributes"].get("locale") platform = job["attributes"]["build_platform"] refs = { "signing": "<checksums-signing>", } worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), } if should_use_artifact_map(platform, config.params['project']): upstream_artifacts = generate_beetmover_upstream_artifacts( job, platform, locale ) worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform, locale=locale) else: upstream_artifacts = generate_upstream_artifacts( refs, platform, locale ) # Clean up un-used artifact map, to avoid confusion if job['attributes'].get('artifact_map'): del job['attributes']['artifact_map'] worker['upstream-artifacts'] = upstream_artifacts if locale: worker["locale"] = locale job["worker"] = worker yield job
def _change_platform_data(config, platform_job, platform): orig_platform = 'linux64' if 'devedition' in platform: orig_platform = 'linux64-devedition' backup_platform = platform_job['attributes']['build_platform'] platform_job['attributes']['build_platform'] = platform platform_job['label'] = platform_job['label'].replace(orig_platform, platform) platform_job['description'] = platform_job['description'].replace(orig_platform, platform) platform_job['treeherder']['platform'] = platform_job['treeherder']['platform'].replace( orig_platform, platform ) platform_job['worker']['release-properties']['platform'] = platform # amend artifactMap entries as well if should_use_artifact_map(backup_platform): platform_mapping = { 'linux64': 'linux-x86_64', 'linux': 'linux-i686', 'macosx64': 'mac', 'win32': 'win32', 'win64': 'win64', } orig_platform = platform_mapping.get(orig_platform, orig_platform) platform = platform_mapping.get(platform, platform) platform_job['worker']['artifact-map'] = [ { 'locale': entry['locale'], 'taskId': entry['taskId'], 'paths': _change_platform_in_artifact_map_paths(entry['paths'], orig_platform, platform) } for entry in platform_job['worker']['artifact-map'] ] return platform_job
def make_beetmover_checksums_worker(config, jobs): for job in jobs: valid_beetmover_job = (len(job["dependencies"]) == 2) if not valid_beetmover_job: raise NotImplementedError( "Beetmover checksums must have two dependencies.") locale = job["attributes"].get("locale") platform = job["attributes"]["build_platform"] refs = { "beetmover": None, "signing": None, } for dependency in job["dependencies"].keys(): if dependency.startswith("beetmover"): refs['beetmover'] = "<{}>".format(dependency) else: refs['signing'] = "<{}>".format(dependency) if None in refs.values(): raise NotImplementedError( "Beetmover checksums must have a beetmover and signing dependency!" ) if should_use_artifact_map(platform): upstream_artifacts = generate_beetmover_upstream_artifacts( config, job, platform, locale) else: upstream_artifacts = generate_upstream_artifacts( refs, platform, locale) worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), 'upstream-artifacts': upstream_artifacts, } if should_use_artifact_map(platform): worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform) if locale: worker["locale"] = locale job["worker"] = worker yield job
def make_task_worker(config, jobs): for job in jobs: valid_beetmover_job = (len(job["dependencies"]) == 2 and any( ['signing' in j for j in job['dependencies']])) # XXX release snap-repackage has a variable number of dependencies, depending on how many # "post-beetmover-dummy" jobs there are in the graph. if '-snap-' not in job['label'] and not valid_beetmover_job: raise NotImplementedError("Beetmover must have two dependencies.") locale = job["attributes"].get("locale") platform = job["attributes"]["build_platform"] build_task = None signing_task = None for dependency in job["dependencies"].keys(): if 'signing' in dependency: signing_task = dependency else: build_task = dependency signing_task_ref = "<" + str(signing_task) + ">" build_task_ref = "<" + str(build_task) + ">" if should_use_artifact_map(platform): upstream_artifacts = generate_beetmover_upstream_artifacts( config, job, platform, locale) else: upstream_artifacts = generate_upstream_artifacts( job, signing_task_ref, build_task_ref, platform, locale) worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), 'upstream-artifacts': upstream_artifacts, } if should_use_artifact_map(platform): worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform, locale=locale) if locale: worker["locale"] = locale job["worker"] = worker yield job
def make_task_worker(config, jobs): for job in jobs: valid_beetmover_job = (len(job["dependencies"]) == 2 and any( ['signing' in j for j in job['dependencies']])) if not valid_beetmover_job: raise NotImplementedError("Beetmover must have two dependencies.") build_task = None signing_task = None for dependency in job["dependencies"].keys(): if 'signing' in dependency: signing_task = dependency else: build_task = dependency signing_task_ref = "<{}>".format(str(signing_task)) build_task_ref = "<{}>".format(str(build_task)) worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), } platform = job["attributes"]["build_platform"] # Works with Firefox/Devedition. Commented for migration. if should_use_artifact_map(platform): upstream_artifacts = generate_beetmover_upstream_artifacts( config, job, platform=None, locale=None) else: upstream_artifacts = generate_upstream_artifacts( job, signing_task_ref, build_task_ref) worker['upstream-artifacts'] = upstream_artifacts # Works with Firefox/Devedition. Commented for migration. if should_use_artifact_map(platform): worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform) job["worker"] = worker yield job
def make_task_worker(config, jobs): for job in jobs: valid_beetmover_job = (len(job["dependencies"]) == 2 and any( ['signing' in j for j in job['dependencies']])) if not valid_beetmover_job: raise NotImplementedError("Beetmover must have two dependencies.") locale = job["attributes"].get("locale") platform = job["attributes"]["build_platform"] build_task = None signing_task = None for dependency in job["dependencies"].keys(): if 'signing' in dependency: signing_task = dependency else: build_task = dependency signing_task_ref = "<" + str(signing_task) + ">" build_task_ref = "<" + str(build_task) + ">" if should_use_artifact_map(platform, config.params['project']): upstream_artifacts = generate_beetmover_upstream_artifacts( job, platform, locale) else: upstream_artifacts = generate_upstream_artifacts( job, signing_task_ref, build_task_ref, platform, locale) worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), 'upstream-artifacts': upstream_artifacts, } if should_use_artifact_map(platform, config.params['project']): worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform, locale=locale) if locale: worker["locale"] = locale job["worker"] = worker 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_beetmover_checksums_worker(config, jobs): for job in jobs: valid_beetmover_job = (len(job["dependencies"]) == 1) if not valid_beetmover_job: raise NotImplementedError( "Beetmover checksums must have one dependency.") locales = job["attributes"].get("chunk_locales") platform = job["attributes"]["build_platform"] refs = { "beetmover": None, } for dependency in job["dependencies"].keys(): if dependency.startswith("release-beetmover"): refs['beetmover'] = "<{}>".format(dependency) if None in refs.values(): raise NotImplementedError( "Beetmover checksums must have a beetmover dependency!") worker = { 'implementation': 'beetmover', 'release-properties': craft_release_properties(config, job), } if should_use_artifact_map(platform, config.params['project']): upstream_artifacts = generate_beetmover_upstream_artifacts( config, job, platform, locales) worker['artifact-map'] = generate_beetmover_artifact_map( config, job, platform=platform, locale=locales) else: upstream_artifacts = generate_upstream_artifacts( refs, platform, locales) worker['upstream-artifacts'] = upstream_artifacts job["worker"] = worker yield job