Bug 1650208: run opt builds by default on autoland; shippable builds by default on central r=tomprince,ahal,marco

Differential Revision: https://phabricator.services.mozilla.com/D83186
This commit is contained in:
Ben Hearsum 2020-07-27 16:25:40 +00:00
parent 3e84200ad6
commit c0a843be6b
17 changed files with 159 additions and 52 deletions

View File

@ -76,7 +76,7 @@ android-x86/opt:
treeherder:
platform: android-4-2-x86/opt
symbol: B
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
worker-type: b-linux
worker:
env:
@ -127,6 +127,7 @@ android-x86-shippable/opt:
treeherder:
platform: android-4-2-x86-shippable/opt
symbol: B
run-on-projects: ['release']
worker-type: b-linux
worker:
env:
@ -151,7 +152,7 @@ android-api-16/opt:
treeherder:
platform: android-4-0-armv7-api16/opt
symbol: B
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
worker-type: b-linux
worker:
env:
@ -181,6 +182,7 @@ android-api-16-shippable/opt:
treeherder:
platform: android-4-0-armv7-api16-shippable/opt
symbol: Bpgo(B)
run-on-projects: ['release']
worker-type: b-linux
worker:
env:
@ -205,7 +207,7 @@ android-aarch64/opt:
treeherder:
platform: android-5-0-aarch64/opt
symbol: B
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
worker-type: b-linux
worker:
env:
@ -259,6 +261,7 @@ android-aarch64-shippable/opt:
treeherder:
platform: android-5-0-aarch64-shippable/opt
symbol: Bpgo(B)
run-on-projects: ['release']
worker-type: b-linux
worker:
env:
@ -283,7 +286,7 @@ android-x86_64/opt:
treeherder:
platform: android-5-0-x86_64/opt
symbol: B
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
worker-type: b-linux
worker:
env:
@ -312,6 +315,7 @@ android-x86_64-shippable/opt:
treeherder:
platform: android-5-0-x86_64-shippable/opt
symbol: B
run-on-projects: ['release']
worker-type: b-linux
worker:
env:

View File

@ -28,7 +28,7 @@ linux64/opt:
secrets: true
tooltool-downloads: public
need-xvfb: true
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
use-sccache: true
fetches:
toolchain:
@ -342,7 +342,7 @@ linux/opt:
secrets: true
tooltool-downloads: public
need-xvfb: true
run-on-projects: ['release']
run-on-projects: ['mozilla-beta', 'mozilla-release', 'mozilla-esr68', 'mozilla-esr78']
use-sccache: true
fetches:
toolchain:
@ -1010,6 +1010,7 @@ linux64-shippable/opt:
treeherder:
platform: linux64-shippable/opt
symbol: Bpgo(B)
run-on-projects: ['release']
worker-type: b-linux
worker:
max-run-time: 9000
@ -1286,6 +1287,7 @@ linux64-aarch64/opt:
mozconfig-variant: opt
tooltool-downloads: public
need-xvfb: true
run-on-projects: ['integration']
use-sccache: true
fetches:
toolchain:

View File

@ -71,11 +71,13 @@ macosx64/opt:
tier: 1
worker:
max-run-time: 7200
env:
MOZ_AUTOMATION_PACKAGE_TESTS: "1"
run:
config:
- builds/releng_base_firefox.py
- builds/releng_base_mac_64_cross_builds.py
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
use-sccache: true
fetches:
toolchain:
@ -221,6 +223,7 @@ macosx64-shippable/opt:
platform: osx-shippable/opt
symbol: Bpgo(B)
tier: 1
run-on-projects: ['release']
worker:
max-run-time: 7200
env:

View File

@ -97,7 +97,7 @@ win32/opt:
env:
LD_PRELOAD: "/builds/worker/fetches/liblowercase/liblowercase.so"
LOWERCASE_DIRS: "/builds/worker/checkouts/gecko/vs2017_15.8.4"
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
use-sccache: true
fetches:
toolchain:
@ -288,7 +288,7 @@ win64/opt:
# another.
LD_PRELOAD: "/builds/worker/fetches/liblowercase/liblowercase.so"
LOWERCASE_DIRS: "/builds/worker/checkouts/gecko/vs2017_15.8.4"
run-on-projects: ['mozilla-central']
run-on-projects: ['integration']
use-sccache: true
fetches:
toolchain:
@ -374,6 +374,7 @@ win32-shippable/opt:
platform: windows2012-32-shippable/opt
symbol: Bpgo(B)
tier: 1
run-on-projects: ['release']
worker-type: b-linux
worker:
docker-image: {in-tree: debian10-amd64-build}
@ -429,6 +430,7 @@ win64-shippable/opt:
platform: windows2012-64-shippable/opt
symbol: Bpgo(B)
tier: 1
run-on-projects: ['release']
worker-type: b-linux
worker:
docker-image: {in-tree: debian10-amd64-build}
@ -1259,6 +1261,7 @@ win64-aarch64/opt:
env:
LD_PRELOAD: "/builds/worker/fetches/liblowercase/liblowercase.so"
LOWERCASE_DIRS: "/builds/worker/checkouts/gecko/vs2017_15.9.6"
run-on-projects: ['integration']
use-sccache: true
fetches:
toolchain:

View File

@ -21,6 +21,7 @@ job-defaults:
symbol: Bpgo(run)
kind: build
tier: 1
run-on-projects: ['release']
jobs:
linux-shippable/opt:

View File

@ -36,6 +36,7 @@ job-defaults:
fetches:
toolchain:
- linux64-sccache
run-on-projects: ['release']
jobs:
linux-shippable/opt:

View File

@ -15,6 +15,8 @@ newtab-unit-tests:
max-run-time: 1800
require-build:
by-project:
autoland:
linux1804-64/opt: build-linux64/opt
try:
linux1804-64/opt: build-linux64/opt
default:

View File

@ -49,10 +49,9 @@ test-verify:
# do not run on ccov or asan
.*-ccov/.*: []
.*-asan/.*: []
# where shippable is available, do not run on plain opt, except on try
(?:windows10-64|windows7-32|linux1804-64|macosx.*64)(?:-qr)?/opt: []
.*shippable.*: []
# do not run on mozilla-central, beta or release: usually just confirms earlier results
default: ['autoland']
default: ['integration']
built-projects-only: true
target:
by-test-platform:
@ -122,10 +121,9 @@ test-verify-gpu:
# do not run on ccov or asan
.*-ccov/.*: []
.*-asan/.*: []
# where shippable is available, do not run on plain opt, except on try
(?:windows10-64|windows7-32|linux1804-64|macosx.*64)(?:-qr)?/opt: []
.*shippable.*: []
# do not run on mozilla-central, beta or release: usually just confirms earlier results
default: ['autoland']
default: ['integration']
built-projects-only: true
tier: 2
mozharness:

View File

@ -18,9 +18,10 @@ job-defaults:
fission-run-on-projects:
by-test-platform:
linux.*64-qr/debug: ['trunk']
linux.*64-qr/opt: ['mozilla-central']
linux.*64/.*: ['mozilla-central']
windows10-64(-qr)?/opt: ['mozilla-central']
linux.*64-shippable-qr/opt: ['mozilla-central']
linux.*64-shippable/.*: ['mozilla-central']
linux.*64/debug: ['mozilla-central']
windows10-64-shippable(-qr)?/opt: ['mozilla-central']
default: []
fission-tier:
by-test-platform:
@ -109,8 +110,8 @@ mochitest-browser-chrome:
fission-run-on-projects:
by-test-platform:
linux.*64(-qr)?/debug: ['trunk']
linux.*64(-qr)?/opt: ['mozilla-central']
windows10-64(-qr)?/opt: ['mozilla-central']
linux.*64-shippable(-qr)?/opt: ['mozilla-central']
windows10-64-shippable(-qr)?/opt: ['mozilla-central']
default: []
tier: default
fission-tier:
@ -151,11 +152,11 @@ browser-screenshots:
loopback-video: true
run-on-projects:
by-test-platform:
windows7-32(?:-pgo|-shippable)(?:-qr)?/opt: ['mozilla-central', 'integration']
windows10-64(?:-pgo|-shippable)(?:-qr)?/opt: ['mozilla-central', 'integration']
(?:windows10-64|windows7-32|linux1804-64)(?:-qr)?/opt: ['mozilla-central']
linux1804-64-(?:pgo|shippable)(?:-qr)?/opt: ['mozilla-central', 'integration']
macosx.*64-shippable/opt: ['mozilla-central', 'integration']
windows7-32(?:-pgo|-shippable)(?:-qr)?/opt: ['mozilla-central']
windows10-64(?:-pgo|-shippable)(?:-qr)?/opt: ['mozilla-central']
(?:windows10-64|windows7-32|linux1804-64|macosx1014-64)(?:-qr)?/opt: ['integration']
linux1804-64-(?:pgo|shippable)(?:-qr)?/opt: ['mozilla-central']
macosx.*64-shippable/opt: ['mozilla-central']
default: []
fission-run-on-projects: []
fission-tier: 2
@ -274,7 +275,7 @@ mochitest-media:
default: 5400
run-on-projects:
by-test-platform:
android-hw-.*(?<!-shippable)/opt: []
android-hw-.*(?<!-shippable)/opt: ['autoland']
android-hw-.*-api-16/(?:debug|pgo)?: ['trunk', 'mozilla-beta', 'mozilla-release']
android-hw-.*-api-16-shippable/opt: ['trunk', 'mozilla-beta', 'mozilla-release']
windows10-aarch64/.*: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
@ -368,6 +369,7 @@ mochitest-webgl1-core:
run-on-projects:
by-test-platform:
android-hw-.*(?<!-shippable)/opt: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
android-hw.*aarch.*-shippable/opt: ['mozilla-central']
default: built-projects
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
allow-software-gl-layers: false
@ -394,6 +396,7 @@ mochitest-webgl1-ext:
run-on-projects:
by-test-platform:
android-hw-.*(?<!-shippable)/opt: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
android-hw.*aarch.*-shippable/opt: ['mozilla-central']
default: built-projects
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
allow-software-gl-layers: false
@ -421,6 +424,7 @@ mochitest-webgl2-core:
run-on-projects:
by-test-platform:
android-hw-.*(?<!-shippable)/opt: ['mozilla-central', 'mozilla-beta', 'mozilla-release']
android-hw.*aarch.*-shippable/opt: ['mozilla-central']
default: built-projects
# Bug 1296733: llvmpipe with mesa 9.2.1 lacks thread safety
allow-software-gl-layers: false
@ -479,6 +483,7 @@ mochitest-webgpu:
run-on-projects:
by-test-platform:
.*mingw.*: ["release"]
.*shippable.*: ["mozilla-central"]
default: ["trunk"]
tier: default
max-run-time:
@ -498,7 +503,8 @@ mochitest-remote:
loopback-video: true
run-on-projects:
by-test-platform:
(linux1804-64|windows7-32|windows10-64)(?:-qr)?/opt: ['mozilla-central']
.*shippable.*: ["mozilla-central"]
(linux1804-64|windows7-32|windows10-64|macosx1014-64)(?:-qr)?/opt: ['integration']
default: ["trunk"]
fission-run-on-projects: []
fission-tier: 2

View File

@ -31,9 +31,12 @@ linux1804-64/opt:
- awsy
- desktop-screenshot-capture
- linux1804-tests
- marionette-headless
- mochitest-headless
- mochitest-webgpu
- web-platform-tests
- web-platform-tests-backlog
- web-platform-tests-wdspec-headless
linux1804-64/debug:
build-platform: linux64/debug
@ -52,6 +55,7 @@ linux1804-64-shippable/opt:
- mochitest-headless
- mochitest-webgpu
- web-platform-tests
- web-platform-tests-backlog
- web-platform-tests-wdspec-headless
linux1804-64-devedition/opt:
@ -78,6 +82,7 @@ linux1804-64-qr/opt:
test-sets:
- awsy
- linux1804-qr-tests
- mochitest-webgpu
- web-platform-tests
linux1804-64-shippable-qr/opt:
@ -181,6 +186,8 @@ windows7-32/opt:
- web-platform-tests
- raptor-firefox
- browsertime
- mochitest-webgpu
- web-platform-tests-wdspec-headless
windows7-32-shippable/opt:
build-platform: win32-shippable/opt
@ -241,6 +248,8 @@ windows10-64/opt:
- web-platform-tests-backlog
- raptor-firefox
- browsertime
- mochitest-webgpu
- web-platform-tests-wdspec-headless
windows10-aarch64/opt:
build-platform: win64-aarch64-shippable/opt
@ -263,6 +272,7 @@ windows10-64-shippable/opt:
- marionette-gpu-tests
- windows-tests
- web-platform-tests
- web-platform-tests-backlog
- web-platform-tests-wdspec-headless
- raptor-chrome
- raptor-chromium
@ -340,6 +350,15 @@ windows7-32-mingwclang/opt:
##
# MacOS X platforms (matching /macosx.*/)
macosx1014-64/opt:
build-platform: macosx64/opt
test-sets:
- macosx1014-64-tests
- desktop-screenshot-capture
- web-platform-tests
- web-platform-tests-backlog
- web-platform-tests-wdspec-headless
macosx1014-64-shippable/opt:
build-platform: macosx64-shippable/opt
test-sets:
@ -370,6 +389,11 @@ macosx1014-64-devedition/opt:
- macosx1014-64-tests
- web-platform-tests
macosx1014-64-qr/opt:
build-platform: macosx64/opt
test-sets:
- macosx1014-64-qr-tests
macosx1014-64-shippable-qr/opt:
build-platform: macosx64-shippable/opt
test-sets:
@ -401,6 +425,7 @@ android-em-7.0-x86_64-shippable/opt:
build-platform: android-x86_64-shippable/opt
test-sets:
- android-x86_64-tests
- web-platform-tests-backlog
android-em-7.0-x86_64/debug:
build-platform: android-x86_64/debug

View File

@ -470,6 +470,7 @@ android-x86_64-qr-tests:
- mochitest-plain-gpu
android-hw-aarch64-opt-unittests:
- jittest
- mochitest-media
- mochitest-webgl1-core
- mochitest-webgl1-ext
@ -482,6 +483,9 @@ android-hw-arm7-pgo-unittests:
android-hw-aarch64-pgo-unittests:
- jittest
- mochitest-media
- mochitest-webgl1-core
- mochitest-webgl1-ext
- mochitest-webgl2-core
android-hw-arm7-debug-unittests:
- jittest

View File

@ -17,8 +17,8 @@ job-defaults:
fission-run-on-projects:
by-test-platform:
linux.*64-qr/debug: ['trunk']
linux.*64-qr/opt: ['mozilla-central']
windows10-64-qr/opt: ['mozilla-central']
linux.*64-shippable-qr/opt: ['mozilla-central']
windows10-64-shippable-qr/opt: ['mozilla-central']
default: []
fission-tier: 2
mozharness:
@ -297,10 +297,9 @@ test-verify-wpt:
# do not run on ccov or asan
.*-ccov/.*: []
.*-asan/.*: []
# where shippable is available, do not run on plain opt, except on try
(?:windows10-64|windows7-32|linux1804-64|macosx.*64)(?:-qr)?/opt: []
.*shippable.*: []
# do not run on beta or release: usually just confirms earlier results
default: ['autoland']
default: ['integration']
built-projects-only: true
tier: 2
mozharness:

View File

@ -73,7 +73,7 @@ PER_PROJECT_PARAMETERS = {
},
'mozilla-central': {
'target_tasks_method': 'default',
'target_tasks_method': 'mozilla_central_tasks',
'release_type': 'nightly',
},
@ -125,6 +125,10 @@ PER_PROJECT_PARAMETERS = {
'target_tasks_method': 'kaios_tasks',
},
'autoland': {
'target_tasks_method': 'autoland_tasks',
},
# the default parameters are used for projects that do not match above.
'default': {
'target_tasks_method': 'default',

View File

@ -80,6 +80,12 @@ class BugBugPushSchedules(OptimizationStrategy):
if confidence >= self.confidence_threshold
)
# Temporarily rewrite shippable tasks to regular opt ones
# until bugbug is updated to handle
# https://bugzilla.mozilla.org/show_bug.cgi?id=1650208
# https://bugzilla.mozilla.org/show_bug.cgi?id=1648292
tasks = map(lambda t: t.replace("-shippable", ""), tasks)
test_manifests = task.attributes.get('test_manifests')
if test_manifests is None or self.tasks_only:
if data.get("known_tasks") and task.label not in data["known_tasks"]:

View File

@ -92,13 +92,7 @@ class SETA(object):
low_value_tasks.update(high_value_android_tasks)
seta_conversions = {
# old: new
'test-linux64/opt': 'test-linux64-shippable/opt',
'test-linux64-qr/opt': 'test-linux64-shippable-qr/opt',
'test-windows7-32/opt': 'test-windows7-32-shippable/opt',
'test-windows10-64/opt': 'test-windows10-64-shippable/opt',
'test-windows10-64-qr/opt': 'test-windows10-64-shippable-qr/opt',
}
}
# Now add new variants to the low-value set
for old, new in six.iteritems(seta_conversions):
if any(t.startswith(old) for t in low_value_tasks):

View File

@ -13,6 +13,8 @@ import six
from taskgraph import try_option_syntax
from taskgraph.parameters import Parameters
from taskgraph.util.attributes import match_run_on_projects, match_run_on_hg_branches
from taskgraph.util.backstop import is_backstop
from taskgraph.util.platforms import platform_family
_target_task_methods = {}
@ -38,13 +40,9 @@ UNCOMMON_TRY_TASK_LABELS = [
r'web-platform-tests.*backlog', # hide wpt jobs that are not implemented yet - bug 1572820
r'-ccov/',
r'-profiling-', # talos/raptor profiling jobs are run too often
# Generally, we don't want shippable builds or tests to run, unless they're needed
# for performance tests _or_ on OS X, where we run all tests against shippable
# builds (not opt).
# The negative lookbehind assertion looks weird here because it has to be fixed
# width, and we have two platforms (build & test) to catch.
# The full version of the first platform is macosx1014-64
r'(?<!(x1014-64|macosx64))-shippable(?!.*(awsy|browsertime|marionette-headless|raptor|talos|web-platform-tests-wdspec-headless))', # noqa - too long
# Hide shippable versions of non perf tests. The non-shippable versions are faster
# to run.
r'-shippable(?!.*(awsy|browsertime|marionette-headless|raptor|talos|web-platform-tests-wdspec-headless))', # noqa - too long
]
@ -318,6 +316,67 @@ def target_tasks_default(full_task_graph, parameters, graph_config):
and filter_out_devedition(t, parameters)]
@_target_task('autoland_tasks')
def target_tasks_autoland(full_task_graph, parameters, graph_config):
"""In addition to doing the filtering by project that the 'default'
filter does, also remove any tests running against shippable builds
for non-backstop pushes."""
filtered_for_project = target_tasks_default(full_task_graph, parameters, graph_config)
def filter(task):
if task.kind != "test":
return True
if is_backstop(parameters):
return True
build_type = task.attributes.get('build_type')
shippable = task.attributes.get('shippable', False)
if not build_type or build_type != 'opt' or not shippable:
return True
return False
return [l for l in filtered_for_project if filter(full_task_graph[l])]
@_target_task('mozilla_central_tasks')
def target_tasks_mozilla_central(full_task_graph, parameters, graph_config):
"""In addition to doing the filtering by project that the 'default'
filter does, also remove any tests running against regular (aka not shippable,
asan, etc.) opt builds."""
filtered_for_project = target_tasks_default(full_task_graph, parameters, graph_config)
def filter(task):
if task.kind != "test":
return True
build_platform = task.attributes.get('build_platform')
build_type = task.attributes.get('build_type')
shippable = task.attributes.get('shippable', False)
if not build_platform or not build_type:
return True
family = platform_family(build_platform)
# We need to know whether this test is against a "regular" opt build
# (which is to say, not shippable, asan, tsan, or any other opt build
# with other properties). There's no positive test for this, so we have to
# do it somewhat hackily. Android doesn't have variants other than shippable
# so it is pretty straightforward to check for. Other platforms have many
# variants, but none of the regular opt builds we're looking for have a "-"
# in their platform name, so this works (for now).
is_regular_opt = (family == 'android' and not shippable) or '-' not in build_platform
if build_type != "opt" or not is_regular_opt:
return True
return False
return [l for l in filtered_for_project if filter(full_task_graph[l])]
@_target_task('graphics_tasks')
def target_tasks_graphics(full_task_graph, parameters, graph_config):
"""In addition to doing the filtering by project that the 'default'

View File

@ -75,9 +75,6 @@ def test_only_important_manifests(params, full_task_graph, filter_tasks):
assert unimportant == []
@pytest.mark.xfail(
reason="Bug 1641131 - shippable builds still showing up due to dependencies"
)
def test_no_shippable_builds(tgg, filter_tasks):
optimized_task_graph = tgg.optimized_task_graph
# We can still sometimes get macosx64-shippable builds with |mach try
@ -88,8 +85,7 @@ def test_no_shippable_builds(tgg, filter_tasks):
for t in filter_tasks(
optimized_task_graph,
lambda t: t.kind == "build"
and "shippable" in t.attributes["build_platform"]
and t.attributes["build_platform"] != "macosx64-shippable",
and "shippable" in t.attributes["build_platform"],
)
]