зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1432817 - [in-tree relpro] Delete push-apk-breakpoint task r=aki
MozReview-Commit-ID: G5nvGfNIVNN --HG-- extra : rebase_source : 4554c1b7ce44edd9f6cef3dd9e2990d7ff2e5b05
This commit is contained in:
Родитель
f603468239
Коммит
77a4f5d36b
|
@ -1,38 +0,0 @@
|
||||||
# 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.push_apk:loader
|
|
||||||
|
|
||||||
transforms:
|
|
||||||
- taskgraph.transforms.push_apk_breakpoint:transforms
|
|
||||||
- taskgraph.transforms.release_notifications:transforms
|
|
||||||
- taskgraph.transforms.task:transforms
|
|
||||||
|
|
||||||
kind-dependencies:
|
|
||||||
- build-signing
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
android-push-apk-breakpoint/opt:
|
|
||||||
description: PushApk breakpoint. Decides whether APK should be published onto Google Play Store
|
|
||||||
attributes:
|
|
||||||
build_platform: android-nightly
|
|
||||||
nightly: true
|
|
||||||
shipping-phase: ship
|
|
||||||
shipping-product: fennec
|
|
||||||
worker-type: # see transforms
|
|
||||||
by-project:
|
|
||||||
mozilla-central: aws-provisioner-v1/taskcluster-generic
|
|
||||||
mozilla-beta: null-provisioner/human-breakpoint
|
|
||||||
mozilla-release: null-provisioner/human-breakpoint
|
|
||||||
maple: aws-provisioner-v1/taskcluster-generic
|
|
||||||
default: invalid/invalid
|
|
||||||
worker:
|
|
||||||
implementation: push-apk-breakpoint
|
|
||||||
treeherder:
|
|
||||||
symbol: pub(Br)
|
|
||||||
platform: Android/opt
|
|
||||||
tier: 2
|
|
||||||
kind: other
|
|
||||||
run-on-projects: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
|
|
||||||
deadline-after: 5 days
|
|
|
@ -12,7 +12,6 @@ transforms:
|
||||||
kind-dependencies:
|
kind-dependencies:
|
||||||
- build-signing
|
- build-signing
|
||||||
- google-play-strings
|
- google-play-strings
|
||||||
- push-apk-breakpoint
|
|
||||||
- beetmover-checksums
|
- beetmover-checksums
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
|
|
@ -222,17 +222,11 @@ google-play-strings
|
||||||
Download strings to display on Google Play from https://l10n.mozilla-community.org/stores_l10n/.
|
Download strings to display on Google Play from https://l10n.mozilla-community.org/stores_l10n/.
|
||||||
Artifact is then used by push-apk.
|
Artifact is then used by push-apk.
|
||||||
|
|
||||||
push-apk-breakpoint
|
|
||||||
-------------------
|
|
||||||
Decides whether or not APKs should be published onto Google Play Store. Jobs of this
|
|
||||||
kind depend on all the signed multi-locales (aka "multi") APKs for a given release,
|
|
||||||
in order to make the decision.
|
|
||||||
|
|
||||||
push-apk
|
push-apk
|
||||||
--------
|
--------
|
||||||
PushApk publishes Android packages onto Google Play Store. Jobs of this kind take
|
PushApk publishes Android packages onto Google Play Store. Jobs of this kind take
|
||||||
all the signed multi-locales (aka "multi") APKs for a given release and upload them
|
all the signed multi-locales (aka "multi") APKs for a given release and upload them
|
||||||
all at once. They also depend on the breakpoint.
|
all at once.
|
||||||
|
|
||||||
release-balrog-submit-toplevel
|
release-balrog-submit-toplevel
|
||||||
----------------------
|
----------------------
|
||||||
|
|
|
@ -21,6 +21,8 @@ def loader(kind, path, config, params, loaded_tasks):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
job['dependent-tasks'] = dependent_tasks
|
job['dependent-tasks'] = dependent_tasks
|
||||||
|
job['label'] = job['name']
|
||||||
|
|
||||||
yield job
|
yield job
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -52,8 +52,7 @@ def filter_beta_release_tasks(task, parameters, ignore_kinds=None, allow_l10n=Fa
|
||||||
'beetmover-repackage', 'beetmover-repackage-signing',
|
'beetmover-repackage', 'beetmover-repackage-signing',
|
||||||
'checksums-signing',
|
'checksums-signing',
|
||||||
'nightly-l10n', 'nightly-l10n-signing',
|
'nightly-l10n', 'nightly-l10n-signing',
|
||||||
'push-apk', 'push-apk-breakpoint',
|
'push-apk', 'repackage-l10n',
|
||||||
'repackage-l10n',
|
|
||||||
]
|
]
|
||||||
platform = task.attributes.get('build_platform')
|
platform = task.attributes.get('build_platform')
|
||||||
if platform in (
|
if platform in (
|
||||||
|
@ -486,7 +485,7 @@ def target_tasks_promote_fennec(full_task_graph, parameters, graph_config):
|
||||||
# are using run-on-projects properly here.
|
# are using run-on-projects properly here.
|
||||||
if 'old-id' in task.label:
|
if 'old-id' in task.label:
|
||||||
return False
|
return False
|
||||||
if task.kind not in ('balrog', 'push-apk', 'push-apk-breakpoint'):
|
if task.kind not in ('balrog', 'push-apk'):
|
||||||
if task.attributes.get('nightly'):
|
if task.attributes.get('nightly'):
|
||||||
return True
|
return True
|
||||||
if task.attributes.get('shipping_product') == 'fennec' and \
|
if task.attributes.get('shipping_product') == 'fennec' and \
|
||||||
|
@ -512,12 +511,9 @@ def target_tasks_ship_fennec(full_task_graph, parameters, graph_config):
|
||||||
if task.attributes.get('shipping_product') != 'fennec' or \
|
if task.attributes.get('shipping_product') != 'fennec' or \
|
||||||
task.attributes.get('shipping_phase') not in ('ship', 'push'):
|
task.attributes.get('shipping_phase') not in ('ship', 'push'):
|
||||||
return False
|
return False
|
||||||
# We always run push-apk* during ship
|
# We always run push-apk during ship
|
||||||
if task.kind in (
|
if task.kind == 'push-apk':
|
||||||
'push-apk',
|
return True
|
||||||
'push-apk-breakpoint',
|
|
||||||
):
|
|
||||||
return True
|
|
||||||
# secondary-notify-ship is only for RC
|
# secondary-notify-ship is only for RC
|
||||||
if task.kind in (
|
if task.kind in (
|
||||||
'release-secondary-notify-ship',
|
'release-secondary-notify-ship',
|
||||||
|
|
|
@ -7,12 +7,9 @@ Transform the push-apk kind into an actual task description.
|
||||||
|
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
import functools
|
|
||||||
|
|
||||||
from taskgraph.transforms.base import TransformSequence
|
from taskgraph.transforms.base import TransformSequence
|
||||||
from taskgraph.transforms.task import task_description_schema
|
from taskgraph.transforms.task import task_description_schema
|
||||||
from taskgraph.util.schema import resolve_keyed_by, Schema
|
from taskgraph.util.schema import resolve_keyed_by, Schema, validate_schema
|
||||||
from taskgraph.util.push_apk import fill_labels_tranform, validate_jobs_schema_transform_partial
|
|
||||||
|
|
||||||
from voluptuous import Required
|
from voluptuous import Required
|
||||||
|
|
||||||
|
@ -37,14 +34,16 @@ google_play_description_schema = Schema({
|
||||||
Required('worker'): object,
|
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
|
||||||
transforms.add(validate_jobs_schema_transform)
|
def validate_jobs_schema(config, jobs):
|
||||||
|
for job in jobs:
|
||||||
|
job['label'] = job['name']
|
||||||
|
validate_schema(
|
||||||
|
google_play_description_schema, job,
|
||||||
|
"In GooglePlayStrings ({!r} kind) task for {!r}:".format(config.kind, job['label'])
|
||||||
|
)
|
||||||
|
yield job
|
||||||
|
|
||||||
|
|
||||||
@transforms.add
|
@transforms.add
|
||||||
|
|
|
@ -7,14 +7,12 @@ Transform the push-apk kind into an actual task description.
|
||||||
|
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
from __future__ import absolute_import, print_function, unicode_literals
|
||||||
|
|
||||||
import functools
|
import re
|
||||||
|
|
||||||
from taskgraph.transforms.base import TransformSequence
|
from taskgraph.transforms.base import TransformSequence
|
||||||
from taskgraph.transforms.task import task_description_schema
|
from taskgraph.transforms.task import task_description_schema
|
||||||
from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by, Schema
|
from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by, Schema, validate_schema
|
||||||
from taskgraph.util.scriptworker import get_push_apk_scope
|
from taskgraph.util.scriptworker import get_push_apk_scope
|
||||||
from taskgraph.util.push_apk import fill_labels_tranform, validate_jobs_schema_transform_partial, \
|
|
||||||
validate_dependent_tasks_transform, delete_non_required_fields_transform, generate_dependencies
|
|
||||||
|
|
||||||
from voluptuous import Optional, Required
|
from voluptuous import Optional, Required
|
||||||
|
|
||||||
|
@ -45,15 +43,42 @@ push_apk_description_schema = Schema({
|
||||||
Optional('extra'): task_description_schema['extra'],
|
Optional('extra'): task_description_schema['extra'],
|
||||||
})
|
})
|
||||||
|
|
||||||
validate_jobs_schema_transform = functools.partial(
|
|
||||||
validate_jobs_schema_transform_partial,
|
|
||||||
push_apk_description_schema,
|
|
||||||
'PushApk'
|
|
||||||
)
|
|
||||||
|
|
||||||
transforms.add(fill_labels_tranform)
|
REQUIRED_ARCHITECTURES = {
|
||||||
transforms.add(validate_jobs_schema_transform)
|
'android-x86-nightly',
|
||||||
transforms.add(validate_dependent_tasks_transform)
|
'android-api-16-nightly',
|
||||||
|
}
|
||||||
|
PLATFORM_REGEX = re.compile(r'build-signing-android-(\S+)-nightly')
|
||||||
|
|
||||||
|
|
||||||
|
@transforms.add
|
||||||
|
def validate_jobs_schema_transform_partial(config, jobs):
|
||||||
|
for job in jobs:
|
||||||
|
label = job.get('label', '?no-label?')
|
||||||
|
validate_schema(
|
||||||
|
push_apk_description_schema, job,
|
||||||
|
"In PushApk ({!r} kind) task for {!r}:".format(config.kind, label)
|
||||||
|
)
|
||||||
|
yield job
|
||||||
|
|
||||||
|
|
||||||
|
@transforms.add
|
||||||
|
def validate_dependent_tasks(_, jobs):
|
||||||
|
for job in jobs:
|
||||||
|
check_every_architecture_is_present_in_dependent_tasks(job['dependent-tasks'])
|
||||||
|
yield job
|
||||||
|
|
||||||
|
|
||||||
|
def check_every_architecture_is_present_in_dependent_tasks(dependent_tasks):
|
||||||
|
dep_platforms = set(t.attributes.get('build_platform') for t in dependent_tasks)
|
||||||
|
missed_architectures = REQUIRED_ARCHITECTURES - dep_platforms
|
||||||
|
if missed_architectures:
|
||||||
|
raise Exception('''One or many required architectures are missing.
|
||||||
|
|
||||||
|
Required architectures: {}.
|
||||||
|
Given dependencies: {}.
|
||||||
|
'''.format(REQUIRED_ARCHITECTURES, dependent_tasks)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
@transforms.add
|
@transforms.add
|
||||||
|
@ -66,8 +91,6 @@ def make_task_description(config, jobs):
|
||||||
if config.params['release_type'] == 'rc':
|
if config.params['release_type'] == 'rc':
|
||||||
job['worker']['google-play-track'] = job['worker']['rc-google-play-track']
|
job['worker']['google-play-track'] = job['worker']['rc-google-play-track']
|
||||||
job['worker']['rollout-percentage'] = job['worker']['rc-rollout-percentage']
|
job['worker']['rollout-percentage'] = job['worker']['rc-rollout-percentage']
|
||||||
del(job['worker']['rc-google-play-track'])
|
|
||||||
del(job['worker']['rc-rollout-percentage'])
|
|
||||||
|
|
||||||
resolve_keyed_by(
|
resolve_keyed_by(
|
||||||
job, 'worker.google-play-track', item_name=job['name'],
|
job, 'worker.google-play-track', item_name=job['name'],
|
||||||
|
@ -93,7 +116,16 @@ def make_task_description(config, jobs):
|
||||||
yield job
|
yield job
|
||||||
|
|
||||||
|
|
||||||
transforms.add(delete_non_required_fields_transform)
|
def generate_dependencies(dependent_tasks):
|
||||||
|
# Because we depend on several tasks that have the same kind, we introduce the platform
|
||||||
|
dependencies = {}
|
||||||
|
for task in dependent_tasks:
|
||||||
|
platform_match = PLATFORM_REGEX.match(task.label)
|
||||||
|
# platform_match is None when the google-play-string task is given, for instance
|
||||||
|
task_kind = task.kind if platform_match is None else \
|
||||||
|
'{}-{}'.format(task.kind, platform_match.group(1))
|
||||||
|
dependencies[task_kind] = task.label
|
||||||
|
return dependencies
|
||||||
|
|
||||||
|
|
||||||
def generate_upstream_artifacts(dependencies):
|
def generate_upstream_artifacts(dependencies):
|
||||||
|
@ -102,7 +134,7 @@ def generate_upstream_artifacts(dependencies):
|
||||||
'taskType': 'signing',
|
'taskType': 'signing',
|
||||||
'paths': ['public/build/target.apk'],
|
'paths': ['public/build/target.apk'],
|
||||||
} for task_kind in dependencies.keys()
|
} for task_kind in dependencies.keys()
|
||||||
if task_kind not in ('push-apk-breakpoint', 'google-play-strings', 'beetmover-checksums')
|
if task_kind not in ('google-play-strings', 'beetmover-checksums')
|
||||||
]
|
]
|
||||||
|
|
||||||
google_play_strings = [{
|
google_play_strings = [{
|
||||||
|
@ -115,3 +147,15 @@ def generate_upstream_artifacts(dependencies):
|
||||||
]
|
]
|
||||||
|
|
||||||
return apks + google_play_strings
|
return apks + google_play_strings
|
||||||
|
|
||||||
|
|
||||||
|
@transforms.add
|
||||||
|
def delete_non_required_fields(_, jobs):
|
||||||
|
for job in jobs:
|
||||||
|
del job['name']
|
||||||
|
del job['dependent-tasks']
|
||||||
|
|
||||||
|
del(job['worker']['rc-google-play-track'])
|
||||||
|
del(job['worker']['rc-rollout-percentage'])
|
||||||
|
|
||||||
|
yield job
|
||||||
|
|
|
@ -1,77 +0,0 @@
|
||||||
# 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/.
|
|
||||||
"""
|
|
||||||
Transform the push-apk-breakpoint kind into an actual task description.
|
|
||||||
"""
|
|
||||||
|
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
|
||||||
|
|
||||||
import functools
|
|
||||||
|
|
||||||
from taskgraph.transforms.base import TransformSequence
|
|
||||||
from taskgraph.transforms.task import task_description_schema
|
|
||||||
from taskgraph.util.schema import optionally_keyed_by, resolve_keyed_by, Schema
|
|
||||||
from taskgraph.util.push_apk import fill_labels_tranform, validate_jobs_schema_transform_partial, \
|
|
||||||
validate_dependent_tasks_transform, delete_non_required_fields_transform, generate_dependencies
|
|
||||||
from voluptuous import Required
|
|
||||||
|
|
||||||
|
|
||||||
transforms = TransformSequence()
|
|
||||||
|
|
||||||
# Voluptuous uses marker objects as dictionary *keys*, but they are not
|
|
||||||
# comparable, so we cast all of the keys back to regular strings
|
|
||||||
task_description_schema = {str(k): v for k, v in task_description_schema.schema.iteritems()}
|
|
||||||
|
|
||||||
push_apk_breakpoint_description_schema = Schema({
|
|
||||||
# the dependent task (object) for this beetmover job, used to inform beetmover.
|
|
||||||
Required('dependent-tasks'): object,
|
|
||||||
Required('name'): basestring,
|
|
||||||
Required('label'): basestring,
|
|
||||||
Required('description'): basestring,
|
|
||||||
Required('job-from'): basestring,
|
|
||||||
Required('attributes'): object,
|
|
||||||
Required('worker-type'): optionally_keyed_by('project', basestring),
|
|
||||||
Required('worker'): object,
|
|
||||||
Required('treeherder'): object,
|
|
||||||
Required('run-on-projects'): list,
|
|
||||||
Required('deadline-after'): basestring,
|
|
||||||
Required('shipping-phase'): task_description_schema['shipping-phase'],
|
|
||||||
Required('shipping-product'): task_description_schema['shipping-product'],
|
|
||||||
})
|
|
||||||
|
|
||||||
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'])
|
|
||||||
|
|
||||||
resolve_keyed_by(
|
|
||||||
job, 'worker-type', item_name=job['name'],
|
|
||||||
project=config.params['project']
|
|
||||||
)
|
|
||||||
|
|
||||||
job['worker']['payload'] = {} if 'human' in job['worker-type'] else {
|
|
||||||
'image': 'ubuntu:16.10',
|
|
||||||
'command': [
|
|
||||||
'/bin/bash',
|
|
||||||
'-c',
|
|
||||||
'echo "Dummy task while while bug 1351664 is implemented"'
|
|
||||||
],
|
|
||||||
'maxRunTime': 600,
|
|
||||||
}
|
|
||||||
|
|
||||||
yield job
|
|
||||||
|
|
||||||
|
|
||||||
transforms.add(delete_non_required_fields_transform)
|
|
|
@ -558,10 +558,6 @@ task_description_schema = Schema({
|
||||||
# Paths to the artifacts to sign
|
# Paths to the artifacts to sign
|
||||||
Required('paths'): [basestring],
|
Required('paths'): [basestring],
|
||||||
}],
|
}],
|
||||||
}, {
|
|
||||||
Required('implementation'): 'push-apk-breakpoint',
|
|
||||||
Required('payload'): object,
|
|
||||||
|
|
||||||
}, {
|
}, {
|
||||||
Required('implementation'): 'invalid',
|
Required('implementation'): 'invalid',
|
||||||
# an invalid task is one which should never actually be created; this is used in
|
# an invalid task is one which should never actually be created; this is used in
|
||||||
|
@ -1119,11 +1115,6 @@ def build_push_apk_payload(config, task, task_def):
|
||||||
task_def['payload']['rollout_percentage'] = worker['rollout-percentage']
|
task_def['payload']['rollout_percentage'] = worker['rollout-percentage']
|
||||||
|
|
||||||
|
|
||||||
@payload_builder('push-apk-breakpoint')
|
|
||||||
def build_push_apk_breakpoint_payload(config, task, task_def):
|
|
||||||
task_def['payload'] = task['worker']['payload']
|
|
||||||
|
|
||||||
|
|
||||||
@payload_builder('shipit')
|
@payload_builder('shipit')
|
||||||
def build_ship_it_payload(config, task, task_def):
|
def build_ship_it_payload(config, task, task_def):
|
||||||
worker = task['worker']
|
worker = task['worker']
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
# 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/.
|
|
||||||
"""
|
|
||||||
Common functions for both push-apk and push-apk-breakpoint.
|
|
||||||
"""
|
|
||||||
from __future__ import absolute_import, print_function, unicode_literals
|
|
||||||
|
|
||||||
import re
|
|
||||||
|
|
||||||
from taskgraph.util.schema import validate_schema
|
|
||||||
|
|
||||||
REQUIRED_ARCHITECTURES = {
|
|
||||||
'android-x86-nightly',
|
|
||||||
'android-api-16-nightly',
|
|
||||||
}
|
|
||||||
PLATFORM_REGEX = re.compile(r'build-signing-android-(\S+)-nightly')
|
|
||||||
|
|
||||||
|
|
||||||
def fill_labels_tranform(_, jobs):
|
|
||||||
for job in jobs:
|
|
||||||
job['label'] = job['name']
|
|
||||||
|
|
||||||
yield job
|
|
||||||
|
|
||||||
|
|
||||||
def validate_jobs_schema_transform_partial(description_schema, transform_type, config, jobs):
|
|
||||||
for job in jobs:
|
|
||||||
label = job.get('label', '?no-label?')
|
|
||||||
validate_schema(
|
|
||||||
description_schema, job,
|
|
||||||
"In {} ({!r} kind) task for {!r}:".format(transform_type, config.kind, label)
|
|
||||||
)
|
|
||||||
yield job
|
|
||||||
|
|
||||||
|
|
||||||
def validate_dependent_tasks_transform(_, jobs):
|
|
||||||
for job in jobs:
|
|
||||||
check_every_architecture_is_present_in_dependent_tasks(job['dependent-tasks'])
|
|
||||||
yield job
|
|
||||||
|
|
||||||
|
|
||||||
def check_every_architecture_is_present_in_dependent_tasks(dependent_tasks):
|
|
||||||
dep_platforms = set(t.attributes.get('build_platform') for t in dependent_tasks)
|
|
||||||
missed_architectures = REQUIRED_ARCHITECTURES - dep_platforms
|
|
||||||
if missed_architectures:
|
|
||||||
raise Exception('''One or many required architectures are missing.
|
|
||||||
|
|
||||||
Required architectures: {}.
|
|
||||||
Given dependencies: {}.
|
|
||||||
'''.format(REQUIRED_ARCHITECTURES, dependent_tasks)
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def delete_non_required_fields_transform(_, jobs):
|
|
||||||
for job in jobs:
|
|
||||||
del job['name']
|
|
||||||
del job['dependent-tasks']
|
|
||||||
|
|
||||||
yield job
|
|
||||||
|
|
||||||
|
|
||||||
def generate_dependencies(dependent_tasks):
|
|
||||||
# Because we depend on several tasks that have the same kind, we introduce the platform
|
|
||||||
dependencies = {}
|
|
||||||
for task in dependent_tasks:
|
|
||||||
platform_match = PLATFORM_REGEX.match(task.label)
|
|
||||||
# platform_match is None when the breakpoint task is given
|
|
||||||
task_kind = task.kind if platform_match is None else \
|
|
||||||
'{}-{}'.format(task.kind, platform_match.group(1))
|
|
||||||
dependencies[task_kind] = task.label
|
|
||||||
return dependencies
|
|
|
@ -40,7 +40,6 @@ WORKER_TYPES = {
|
||||||
'buildbot-bridge/buildbot-bridge': ('buildbot-bridge', None),
|
'buildbot-bridge/buildbot-bridge': ('buildbot-bridge', None),
|
||||||
'invalid/invalid': ('invalid', None),
|
'invalid/invalid': ('invalid', None),
|
||||||
'invalid/always-optimized': ('always-optimized', None),
|
'invalid/always-optimized': ('always-optimized', None),
|
||||||
'null-provisioner/human-breakpoint': ('push-apk-breakpoint', None),
|
|
||||||
'releng-hardware/gecko-t-linux-talos': ('native-engine', 'linux'),
|
'releng-hardware/gecko-t-linux-talos': ('native-engine', 'linux'),
|
||||||
'scriptworker-prov-v1/balrog-dev': ('balrog', None),
|
'scriptworker-prov-v1/balrog-dev': ('balrog', None),
|
||||||
'scriptworker-prov-v1/balrogworker-v1': ('balrog', None),
|
'scriptworker-prov-v1/balrogworker-v1': ('balrog', None),
|
||||||
|
|
Загрузка…
Ссылка в новой задаче