Bug 1490094: [release] Configure staging release resources via dedicated parameter; r=bhearsum

Currently, release resources such as balrog, bouncer and CDN urls are
configured by project. However, all production branches use one value and all
other branches use another. Rather than duplicate lists of projects, add a
helper to identify production release branches.

Differential Revision: https://phabricator.services.mozilla.com/D5583

--HG--
extra : moz-landing-system : lando
This commit is contained in:
Tom Prince 2018-09-11 21:09:28 +00:00
Родитель 36100c0619
Коммит f8cc2f6b8f
35 изменённых файлов: 162 добавлений и 216 удалений

Просмотреть файл

@ -34,8 +34,6 @@ job-template:
# act only when the release is greenlit.
shipping-phase: ship
bucket-scope:
by-project:
mozilla-central: 'project:releng:beetmover:bucket:maven-production'
mozilla-beta: 'project:releng:beetmover:bucket:maven-production'
mozilla-release: 'project:releng:beetmover:bucket:maven-production'
default: 'project:releng:beetmover:bucket:maven-staging'
by-release-level:
production: 'project:releng:beetmover:bucket:maven-production'
staging: 'project:releng:beetmover:bucket:maven-staging'

Просмотреть файл

@ -21,11 +21,9 @@ jobs:
shipping-phase: ship
shipping-product: fennec
worker-type:
by-project:
mozilla-central: scriptworker-prov-v1/pushapk-v1
mozilla-beta: scriptworker-prov-v1/pushapk-v1
mozilla-release: scriptworker-prov-v1/pushapk-v1
default: scriptworker-prov-v1/dep-pushapk
by-release-level:
production: scriptworker-prov-v1/pushapk-v1
staging: scriptworker-prov-v1/dep-pushapk
worker:
upstream-artifacts: # see transforms
google-play-track:
@ -42,11 +40,9 @@ jobs:
default: 'invalid'
implementation: push-apk
commit:
by-project:
mozilla-central: true
mozilla-beta: true
mozilla-release: true
default: false
by-release-level:
production: true
staging: false
rollout-percentage:
by-project:
# XXX Please make sure to change PUSH_APK_GOOGLE_PLAY_TRACT to

Просмотреть файл

@ -16,6 +16,14 @@ job-defaults:
implementation: balrog
balrog-action: submit-toplevel
require-mirrors: true
archive-domain:
by-release-level:
production: archive.mozilla.org
staging: ftp.stage.mozaws.net
download-domain:
by-release-level:
production: download.mozilla.org
staging: bouncer-bouncer-releng.stage.mozaws.net
jobs:
firefox:
@ -24,18 +32,6 @@ jobs:
shipping-product: firefox
worker:
product: firefox
archive-domain:
by-project:
mozilla-beta: archive.mozilla.org
mozilla-release: archive.mozilla.org
mozilla-esr60: archive.mozilla.org
default: ftp.stage.mozaws.net
download-domain:
by-project:
mozilla-beta: download.mozilla.org
mozilla-release: download.mozilla.org
mozilla-esr60: download.mozilla.org
default: bouncer-bouncer-releng.stage.mozaws.net
channel-names:
by-project:
maple: ["beta", "beta-localtest", "beta-cdntest"]
@ -77,14 +73,6 @@ jobs:
shipping-product: firefox
worker:
product: firefox
archive-domain:
by-project:
mozilla-esr60: archive.mozilla.org
default: ftp.stage.mozaws.net
download-domain:
by-project:
mozilla-esr60: download.mozilla.org
default: download.mozilla.org
channel-names:
by-project:
mozilla-esr60: ["esr", "esr-localtest", "esr-cdntest"]
@ -113,14 +101,6 @@ jobs:
shipping-product: devedition
worker:
product: devedition
archive-domain:
by-project:
mozilla-beta: archive.mozilla.org
default: ftp.stage.mozaws.net
download-domain:
by-project:
mozilla-beta: download.mozilla.org
default: download.mozilla.org
channel-names:
by-project:
maple: ["aurora", "aurora-localtest", "aurora-cdntest"]

Просмотреть файл

@ -18,10 +18,8 @@ only-for-attributes:
job-template:
description: Beetmover submission for platform-independent langpacks {locales} in {platform} directory
worker-type:
by-project:
mozilla-beta: scriptworker-prov-v1/beetmoverworker-v1
mozilla-release: scriptworker-prov-v1/beetmoverworker-v1
mozilla-esr60: scriptworker-prov-v1/beetmoverworker-v1
default: scriptworker-prov-v1/beetmoverworker-dev
by-release-level:
production: scriptworker-prov-v1/beetmoverworker-v1
staging: scriptworker-prov-v1/beetmoverworker-dev
run-on-projects: []
shipping-phase: promote

Просмотреть файл

@ -15,25 +15,17 @@ kind-dependencies:
job-defaults:
description: Update bouncer aliases job
worker-type:
by-project:
mozilla-beta: scriptworker-prov-v1/bouncer-v1
mozilla-release: scriptworker-prov-v1/bouncer-v1
mozilla-esr60: scriptworker-prov-v1/bouncer-v1
default: scriptworker-prov-v1/bouncer-dev
by-release-level:
production: scriptworker-prov-v1/bouncer-v1
staging: scriptworker-prov-v1/bouncer-dev
worker:
implementation: bouncer-aliases
scopes:
by-project:
mozilla-beta:
by-release-level:
production:
- project:releng:bouncer:action:aliases
- project:releng:bouncer:server:production
mozilla-release:
- project:releng:bouncer:action:aliases
- project:releng:bouncer:server:production
mozilla-esr60:
- project:releng:bouncer:action:aliases
- project:releng:bouncer:server:production
default:
staging:
- project:releng:bouncer:action:aliases
- project:releng:bouncer:server:staging
run-on-projects: []

Просмотреть файл

@ -11,25 +11,17 @@ transforms:
job-defaults:
description: release bouncer submission job
worker-type:
by-project:
mozilla-beta: scriptworker-prov-v1/bouncer-v1
mozilla-release: scriptworker-prov-v1/bouncer-v1
mozilla-esr60: scriptworker-prov-v1/bouncer-v1
default: scriptworker-prov-v1/bouncer-dev
by-release-level:
production: scriptworker-prov-v1/bouncer-v1
staging: scriptworker-prov-v1/bouncer-dev
worker:
implementation: bouncer-submission
scopes:
by-project:
mozilla-beta:
by-release-level:
production:
- project:releng:bouncer:action:submission
- project:releng:bouncer:server:production
mozilla-release:
- project:releng:bouncer:action:submission
- project:releng:bouncer:server:production
mozilla-esr60:
- project:releng:bouncer:action:submission
- project:releng:bouncer:server:production
default:
staging:
- project:releng:bouncer:action:submission
- project:releng:bouncer:server:staging
run-on-projects: []

Просмотреть файл

@ -20,9 +20,8 @@ only-for-build-platforms:
job-template:
shipping-phase: promote
partner-bucket-scope:
by-project:
mozilla-beta: beetmover:bucket:partner
mozilla-release: beetmover:bucket:partner
default: beetmover:bucket:dep-partner
by-release-level:
production: beetmover:bucket:partner
staging: beetmover:bucket:dep-partner
partner-private-path: null
partner-public-path: "{platform}-EME-free/{locale}"

Просмотреть файл

@ -36,11 +36,9 @@ job-defaults:
tooltool-downloads: false
extra:
limit-locales:
by-project:
birch: true
jamun: true
maple: true
default: false
by-release-level:
staging: true
production: false
jobs:
macosx64-nightly:

Просмотреть файл

@ -13,10 +13,3 @@ kind-dependencies:
job-template:
shipping-phase: promote
worker-type:
by-project:
mozilla-central: scriptworker-prov-v1/beetmoverworker-v1
mozilla-beta: scriptworker-prov-v1/beetmoverworker-v1
mozilla-release: scriptworker-prov-v1/beetmoverworker-v1
mozilla-esr60: scriptworker-prov-v1/beetmoverworker-v1
default: scriptworker-prov-v1/beetmoverworker-dev

Просмотреть файл

@ -58,11 +58,11 @@ jobs:
build_type: opt
run:
extra-config:
by-project:
mozilla-(release|beta|esr.*):
by-release-level:
production:
stage_product: "firefox"
bucket_name: "net-mozaws-prod-delivery-firefox"
default:
staging:
stage_product: "firefox"
bucket_name: "net-mozaws-stage-delivery-firefox"
treeherder:
@ -75,11 +75,11 @@ jobs:
build_type: opt
run:
extra-config:
by-project:
mozilla-(release|beta):
by-release-level:
production:
stage_product: "mobile"
bucket_name: "net-mozaws-prod-delivery-archive"
default:
staging:
stage_product: "mobile"
bucket_name: "net-mozaws-stage-delivery-archive"
treeherder:
@ -92,11 +92,11 @@ jobs:
build_type: opt
run:
extra-config:
by-project:
mozilla-beta:
by-release-level:
production:
stage_product: "devedition"
bucket_name: "net-mozaws-prod-delivery-archive"
default:
staging:
stage_product: "devedition"
bucket_name: "net-mozaws-stage-delivery-archive"
treeherder:

Просмотреть файл

@ -18,26 +18,17 @@ kind-dependencies:
job-defaults:
description: mark release as shipped in Ship-It
worker-type:
by-project:
mozilla-central: scriptworker-prov-v1/shipit-v1
mozilla-beta: scriptworker-prov-v1/shipit-v1
mozilla-release: scriptworker-prov-v1/shipit-v1
mozilla-esr60: scriptworker-prov-v1/shipit-v1
default: scriptworker-prov-v1/shipit-dev
by-release-level:
production: scriptworker-prov-v1/shipit-v1
staging: scriptworker-prov-v1/shipit-dev
worker:
implementation: shipit-shipped
scopes:
by-project:
mozilla-beta:
by-release-level:
production:
- project:releng:ship-it:server:production
- project:releng:ship-it:action:mark-as-shipped
mozilla-release:
- project:releng:ship-it:server:production
- project:releng:ship-it:action:mark-as-shipped
mozilla-esr60:
- project:releng:ship-it:server:production
- project:releng:ship-it:action:mark-as-shipped
default:
staging:
- project:releng:ship-it:server:staging
- project:releng:ship-it:action:mark-as-shipped
run-on-projects: []

Просмотреть файл

@ -22,9 +22,8 @@ only-for-build-platforms:
job-template:
shipping-phase: promote
partner-bucket-scope:
by-project:
mozilla-beta: beetmover:bucket:partner
mozilla-release: beetmover:bucket:partner
default: beetmover:bucket:dep-partner
by-release-level:
production: beetmover:bucket:partner
staging: beetmover:bucket:dep-partner
partner-public-path: "partner-repacks/{partner}/{subpartner}/v{release_partner_build_number}/{platform}/{locale}"
partner-private-path: "{partner}/{version}-{build_number}/{subpartner}/{platform}/{locale}"

Просмотреть файл

@ -36,11 +36,9 @@ job-defaults:
tooltool-downloads: false
extra:
limit-locales:
by-project:
birch: true
jamun: true
maple: true
default: false
by-release-level:
staging: true
production: false
jobs:
linux-nightly:

Просмотреть файл

@ -17,6 +17,14 @@ job-defaults:
balrog-action: submit-toplevel
require-mirrors: false
platforms: ["linux", "linux64", "macosx64", "win32", "win64"]
archive-domain:
by-release-level:
production: archive.mozilla.org
staging: ftp.stage.mozaws.net
download-domain:
by-release-level:
production: download.mozilla.org
staging: bouncer-bouncer-releng.stage.mozaws.net
jobs:
firefox:
@ -25,16 +33,6 @@ jobs:
shipping-product: firefox
worker:
product: firefox
archive-domain:
by-project:
mozilla-release: archive.mozilla.org
mozilla-esr60: archive.mozilla.org
default: ftp.stage.mozaws.net
download-domain:
by-project:
mozilla-release: download.mozilla.org
mozilla-esr60: download.mozilla.org
default: download.mozilla.org
channel-names:
by-project:
birch: ["beta", "beta-localtest", "beta-cdntest"]

Просмотреть файл

@ -31,17 +31,17 @@ job-defaults:
branch-prefix: mozilla
product: firefox
archive-prefix:
by-project:
birch: "http://ftp.stage.mozaws.net/pub"
default: "https://archive.mozilla.org/pub"
by-release-level:
staging: "http://ftp.stage.mozaws.net/pub"
production: "https://archive.mozilla.org/pub"
previous-archive-prefix:
by-project:
birch: "https://archive.mozilla.org/pub"
default: null
by-release-level:
staging: "https://archive.mozilla.org/pub"
production: null
aus-server:
by-project:
birch: "https://aus4.stage.mozaws.net"
default: "https://aus5.mozilla.org"
by-release-level:
staging: "https://aus4.stage.mozaws.net"
production: "https://aus5.mozilla.org"
include-version:
by-project:
birch: beta

Просмотреть файл

@ -23,11 +23,9 @@ only-for-build-platforms:
job-template:
description: Signs {locales} XPIs for platform via addons.mozilla.org and pushes them
worker-type:
by-project:
mozilla-beta: scriptworker-prov-v1/addon-v1
mozilla-release: scriptworker-prov-v1/addon-v1
mozilla-esr60: scriptworker-prov-v1/addon-v1
default: scriptworker-prov-v1/addon-dev
by-release-level:
production: scriptworker-prov-v1/addon-v1
staging: scriptworker-prov-v1/addon-dev
worker:
implementation: sign-and-push-addons
channel:
@ -41,13 +39,9 @@ job-template:
upstream-artifacts: # See transforms
run-on-projects: []
scopes:
by-project:
mozilla-beta:
by-release-level:
production:
- project:releng:addons.mozilla.org:server:production
mozilla-release:
- project:releng:addons.mozilla.org:server:production
mozilla-esr60:
- project:releng:addons.mozilla.org:server:production
default:
staging:
- project:releng:addons.mozilla.org:server:staging
shipping-phase: promote

Просмотреть файл

@ -27,11 +27,9 @@ job-defaults:
kind: build
tier: 2
worker-type:
by-project:
mozilla-beta: scriptworker-prov-v1/pushsnap-v1
mozilla-release: scriptworker-prov-v1/pushsnap-v1
mozilla-esr60: scriptworker-prov-v1/pushsnap-v1
default: scriptworker-prov-v1/dep-pushsnap
by-release-level:
production: scriptworker-prov-v1/pushsnap-v1
staging: scriptworker-prov-v1/dep-pushsnap
worker:
implementation: push-snap

Просмотреть файл

@ -45,12 +45,10 @@ job-defaults:
VERSION: "{release_config[version]}"
BUILD_NUMBER: "{release_config[build_number]}"
CANDIDATES_DIR:
by-project:
jamun:
by-release-level:
staging:
https://net-mozaws-stage-delivery-firefox.s3.amazonaws.com/pub/{task[shipping-product]}/candidates
maple:
https://net-mozaws-stage-delivery-firefox.s3.amazonaws.com/pub/{task[shipping-product]}/candidates
default:
production:
https://net-mozaws-prod-delivery-firefox.s3.amazonaws.com/pub/{task[shipping-product]}/candidates
LC_ALL: C.UTF-8
LANG: C.UTF-8

Просмотреть файл

@ -29,23 +29,17 @@ job-defaults:
app-name: browser
branch-prefix: mozilla
archive-prefix:
by-project:
birch: "http://ftp.stage.mozaws.net/pub"
jamun: "http://ftp.stage.mozaws.net/pub"
maple: "http://ftp.stage.mozaws.net/pub"
default: "https://archive.mozilla.org/pub"
by-release-level:
staging: "http://ftp.stage.mozaws.net/pub"
production: "https://archive.mozilla.org/pub"
previous-archive-prefix:
by-project:
birch: "https://archive.mozilla.org/pub"
jamun: "https://archive.mozilla.org/pub"
maple: "https://archive.mozilla.org/pub"
default: null
by-release-level:
staging: "https://archive.mozilla.org/pub"
production: null
aus-server:
by-project:
birch: "https://aus4.stage.mozaws.net"
jamun: "https://aus4.stage.mozaws.net"
maple: "https://aus4.stage.mozaws.net"
default: "https://aus5.mozilla.org"
by-release-level:
staging: "https://aus4.stage.mozaws.net"
production: "https://aus5.mozilla.org"
# This is overridden for devedition to exclude 58.0b1
# because of the special case added by
# https://bugzilla.mozilla.org/show_bug.cgi?id=1419189

Просмотреть файл

@ -16,6 +16,7 @@ from mozbuild.util import ReadOnlyDict, memoize
from mozversioncontrol import get_repository_object
from . import APP_VERSION_PATH, GECKO, VERSION_PATH
from .util.attributes import RELEASE_PROJECTS
class ParameterMismatch(Exception):
@ -166,6 +167,14 @@ class Parameters(ReadOnlyDict):
return '{}/file/{}/{}'.format(repo, rev, path)
def release_level(self):
"""
Whether this is a staging release or not.
:return basestring: One of "production" or "staging".
"""
return 'production' if self['project'] in RELEASE_PROJECTS else 'staging'
def load_parameters_file(filename, strict=True, overrides=None):
"""

Просмотреть файл

@ -42,7 +42,7 @@ beetmover_description_schema = Schema({
Optional('label'): basestring,
Optional('treeherder'): task_description_schema['treeherder'],
Optional('bucket-scope'): optionally_keyed_by('project', basestring),
Optional('bucket-scope'): optionally_keyed_by('release-level', basestring),
Optional('shipping-phase'): task_description_schema['shipping-phase'],
Optional('shipping-product'): task_description_schema['shipping-product'],
})
@ -91,7 +91,7 @@ def make_task_description(config, jobs):
resolve_keyed_by(
job, 'bucket-scope', item_name=job['label'],
project=config.params['project']
**{'release-level': config.params.release_level()}
)
task = {

Просмотреть файл

@ -57,7 +57,7 @@ beetmover_description_schema = Schema({
# unique label to describe this beetmover task, defaults to {dep.label}-beetmover
Optional('label'): basestring,
Required('partner-bucket-scope'): optionally_keyed_by('project', basestring),
Required('partner-bucket-scope'): optionally_keyed_by('release-level', basestring),
Required('partner-public-path'): Any(None, basestring),
Required('partner-private-path'): Any(None, basestring),
@ -83,7 +83,8 @@ def validate(config, jobs):
def resolve_keys(config, jobs):
for job in jobs:
resolve_keyed_by(
job, 'partner-bucket-scope', item_name=job['label'], project=config.params['project']
job, 'partner-bucket-scope', item_name=job['label'],
**{'release-level': config.params.release_level()}
)
yield job

Просмотреть файл

@ -23,10 +23,12 @@ transforms = TransformSequence()
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-type', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'scopes', item_name=job['name'], project=config.params['project']
job, 'scopes', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'bouncer-products-per-alias',

Просмотреть файл

@ -110,10 +110,12 @@ transforms = TransformSequence()
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-type', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'scopes', item_name=job['name'], project=config.params['project']
job, 'scopes', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'bouncer-products', item_name=job['name'], project=config.params['project']

Просмотреть файл

@ -34,7 +34,10 @@ def populate_repack_manifests_url(config, tasks):
for property in ("limit-locales", ):
property = "extra.{}".format(property)
resolve_keyed_by(task, property, property, **config.params)
resolve_keyed_by(
task, property, property,
**{'release-level': config.params.release_level()}
)
if task['worker']['env']['REPACK_MANIFESTS_URL'].startswith('git@'):
task.setdefault('scopes', []).append(

Просмотреть файл

@ -34,7 +34,7 @@ push_apk_description_schema = Schema({
Required('attributes'): task_description_schema['attributes'],
Required('treeherder'): task_description_schema['treeherder'],
Required('run-on-projects'): task_description_schema['run-on-projects'],
Required('worker-type'): optionally_keyed_by('project', basestring),
Required('worker-type'): optionally_keyed_by('release-level', basestring),
Required('worker'): object,
Required('scopes'): None,
Required('requires'): task_description_schema['requires'],
@ -101,7 +101,7 @@ def make_task_description(config, jobs):
)
resolve_keyed_by(
job, 'worker.commit', item_name=job['name'],
project=config.params['project']
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
@ -113,7 +113,7 @@ def make_task_description(config, jobs):
resolve_keyed_by(
job, 'worker-type', item_name=job['name'],
project=config.params['project']
**{'release-level': config.params.release_level()}
)
yield job

Просмотреть файл

@ -45,7 +45,7 @@ beetmover_description_schema = Schema({
Optional('treeherder'): task_description_schema['treeherder'],
Required('description'): basestring,
Required('worker-type'): optionally_keyed_by('project', basestring),
Required('worker-type'): optionally_keyed_by('release-level', basestring),
Required('run-on-projects'): [],
# locale is passed only for l10n beetmoving
@ -79,7 +79,8 @@ def validate(config, jobs):
def resolve_keys(config, jobs):
for job in jobs:
resolve_keyed_by(
job, 'worker-type', item_name=job['label'], project=config.params['project']
job, 'worker-type', item_name=job['label'],
**{'release-level': config.params.release_level()}
)
yield job

Просмотреть файл

@ -35,7 +35,7 @@ def handle_keyed_by(config, jobs):
item=job,
field=field,
item_name=job['name'],
project=config.params['project']
**{'release-level': config.params.release_level()}
)
yield job

Просмотреть файл

@ -8,10 +8,12 @@ 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.schema import validate_schema, Schema, resolve_keyed_by, optionally_keyed_by
from taskgraph.util.schema import validate_schema, Schema
from taskgraph.util.scriptworker import (get_beetmover_bucket_scope,
get_beetmover_action_scope,
get_phase)
get_phase,
get_worker_type_for_scope,
)
from taskgraph.util.taskcluster import get_artifact_prefix
from taskgraph.transforms.beetmover import craft_release_properties
from taskgraph.transforms.task import task_description_schema
@ -56,7 +58,6 @@ release_generate_checksums_beetmover_schema = Schema({
Optional('shipping-phase'): task_description_schema['shipping-phase'],
Optional('shipping-product'): task_description_schema['shipping-product'],
Required('worker-type'): optionally_keyed_by('project', basestring),
})
@ -105,14 +106,10 @@ def make_task_description(config, jobs):
action_scope = get_beetmover_action_scope(config)
phase = get_phase(config)
resolve_keyed_by(
job, 'worker-type', item_name=label, project=config.params['project']
)
task = {
'label': label,
'description': description,
'worker-type': job['worker-type'],
'worker-type': get_worker_type_for_scope(config, bucket_scope),
'scopes': [bucket_scope, action_scope],
'dependencies': dependencies,
'attributes': attributes,

Просмотреть файл

@ -19,10 +19,12 @@ def make_task_description(config, jobs):
release_config = get_release_config(config)
for job in jobs:
resolve_keyed_by(
job, 'worker-type', item_name=job['name'], project=config.params['project']
job, 'worker-type', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'scopes', item_name=job['name'], project=config.params['project']
job, 'scopes', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
job['worker']['release-name'] = '{product}-{version}-build{build_number}'.format(

Просмотреть файл

@ -26,7 +26,7 @@ langpack_sign_push_description_schema = Schema({
Required('dependent-task'): object,
Required('label'): basestring,
Required('description'): basestring,
Required('worker-type'): optionally_keyed_by('project', basestring),
Required('worker-type'): optionally_keyed_by('release-level', basestring),
Required('worker'): {
Required('implementation'): 'sign-and-push-addons',
Required('channel'): optionally_keyed_by(
@ -36,7 +36,7 @@ langpack_sign_push_description_schema = Schema({
},
Required('run-on-projects'): [],
Required('scopes'): optionally_keyed_by('project', [basestring]),
Required('scopes'): optionally_keyed_by('release-level', [basestring]),
Required('shipping-phase'): task_description_schema['shipping-phase'],
Required('shipping-product'): task_description_schema['shipping-product'],
})
@ -65,10 +65,12 @@ def validate(config, jobs):
def resolve_keys(config, jobs):
for job in jobs:
resolve_keyed_by(
job, 'worker-type', item_name=job['label'], project=config.params['project']
job, 'worker-type', item_name=job['label'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'scopes', item_name=job['label'], project=config.params['project']
job, 'scopes', item_name=job['label'],
**{'release-level': config.params.release_level()}
)
resolve_keyed_by(
job, 'worker.channel', item_name=job['label'],

Просмотреть файл

@ -28,7 +28,7 @@ push_snap_description_schema = Schema({
Required('description'): task_description_schema['description'],
Required('treeherder'): task_description_schema['treeherder'],
Required('run-on-projects'): task_description_schema['run-on-projects'],
Required('worker-type'): optionally_keyed_by('project', basestring),
Required('worker-type'): optionally_keyed_by('release-level', basestring),
Required('worker'): object,
Required('scopes'): optionally_keyed_by('project', [basestring]),
Required('shipping-phase'): task_description_schema['shipping-phase'],
@ -58,7 +58,8 @@ def make_task_description(config, jobs):
resolve_keyed_by(job, 'scopes', item_name=job['name'], project=config.params['project'])
resolve_keyed_by(
job, 'worker-type', item_name=job['name'], project=config.params['project']
job, 'worker-type', item_name=job['name'],
**{'release-level': config.params.release_level()}
)
yield job

Просмотреть файл

@ -30,7 +30,10 @@ def format(config, tasks):
env = task.get('worker', {}).get('env', {})
for k in env.keys():
resolve_keyed_by(env, k, 'snap envs', project=config.params['project'])
resolve_keyed_by(
env, k, 'snap envs',
**{'release-level': config.params.release_level()}
)
task['worker']['env'][k] = env[k].format(**format_params)
yield task

Просмотреть файл

@ -544,8 +544,8 @@ task_description_schema = Schema({
Optional('require-mirrors'): bool,
Optional('publish-rules'): optionally_keyed_by('project', [int]),
Optional('rules-to-update'): optionally_keyed_by('project', [basestring]),
Optional('archive-domain'): optionally_keyed_by('project', basestring),
Optional('download-domain'): optionally_keyed_by('project', basestring),
Optional('archive-domain'): optionally_keyed_by('release-level', basestring),
Optional('download-domain'): optionally_keyed_by('release-level', basestring),
Optional('blob-suffix'): basestring,
Optional('complete-mar-filename-pattern'): basestring,
Optional('complete-mar-bouncer-product-pattern'): basestring,
@ -1152,7 +1152,10 @@ def build_balrog_payload(config, task, task_def):
if prop in worker:
resolve_keyed_by(
worker, prop, task['description'],
**config.params
**{
'project': config.params['project'],
'release-level': config.params.release_level(),
}
)
task_def['payload'] = {
'build_number': release_config['build_number'],

Просмотреть файл

@ -98,6 +98,10 @@ def add_command(config, tasks):
item_name=task['name'],
project=config.params['project'],
platform=task['attributes']['build_platform'],
**{
'release-type': config.params['release_type'],
'release-level': config.params.release_level(),
}
)
# ignore things that resolved to null
if not task["extra"].get(arg):