Bug 1372697 - Add build variant with beta configuration
Currently, "trunk" repos (mozilla-central, autoland, and inbound) build
with the "nightly" mozconfig and non-trunk repos (beta, release, esr, etc)
build with different mozconfigs having different settings. Notably, the
"nightly" mozconfigs strip binaries and have --enable-profiling. These
can impact application performance and other behavior.
Historically, we've gotten bit from regressions in "trunk" not being
caught until the next uplift - up to 6 weeks later (or more if
functionality didn't run on aurora or beta). These regressions are
extremely annoying when they occur because they disrupt the release
cycle and because developers responsible for breaking things have
already mentally moved on from the changed code, so fixing the
regressions several weeks later has a substantially higher cost than
fixing it at or near regression time.
This commit starts to fix the general problem by introducing a build
variant on the "trunk" repos that builds with the "beta" configuration.
Currently, only builds (not tests) are performed. That's better than
nothing.
Rather than introduce one-off mozharness configs and build variants,
we instead defining the path to the one-off mozconfig via an environment
variable. `mach build` knows how to look for this variable so it "just
works."
TODO:
* Add Android. (Not sure what base platform(s) to run.)
* Add 32 bit variations
* Add PGO variations?
* Make tier 1?
* Use mozconfig that includes mozconfig.cache
MozReview-Commit-ID: 1TXwvaQZXYk
--- a/taskcluster/ci/build/android.yml
+++ b/taskcluster/ci/build/android.yml
@@ -126,16 +126,42 @@ android-api-15-nightly/opt:
- disable_signing.py
- platform_supports_post_upload_to_latest.py
- taskcluster_nightly.py
script: "mozharness/scripts/fx_desktop_build.py"
secrets: true
custom-build-variant-cfg: api-15
tooltool-downloads: internal
+android-api-15-beta/opt:
+ description: "Android 4.0 API15+ Opt Beta Configuration"
+ index:
+ product: mobile
+ job-name: android-api-15-opt-beta
+ treeherder:
+ platform: android-4-0-armv7-api15-beta/opt
+ symbol: tc(B)
+ worker-type: aws-provisioner-v1/gecko-{level}-b-android
+ worker:
+ max-run-time: 7200
+ env:
+ MOZCONFIG: mobile/android/config/mozconfigs/android-api-15/beta
+ TOOLTOOL_MANIFEST: "mobile/android/config/tooltool-manifests/android/releng.manifest"
+ run:
+ using: mozharness
+ actions: [get-secrets build multi-l10n update]
+ config:
+ - builds/releng_base_android_64_builds.py
+ - disable_signing.py
+ - platform_supports_post_upload_to_latest.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ custom-build-variant-cfg: api-15
+ tooltool-downloads: internal
+
android-x86-old-id/opt:
description: "Android 4.2 x86 Opt OldId"
index:
product: mobile
job-name: android-x86-old-id-opt
treeherder:
platform: android-4-2-x86-old-id/opt
symbol: tc(B)
--- a/taskcluster/ci/build/linux.yml
+++ b/taskcluster/ci/build/linux.yml
@@ -43,16 +43,44 @@ linux64/pgo:
config:
- builds/releng_base_linux_64_builds.py
- balrog/production.py
script: "mozharness/scripts/fx_desktop_build.py"
secrets: true
tooltool-downloads: public
need-xvfb: true
+linux64-beta/opt:
+ description: "Linux64 Opt Beta Configuration"
+ index:
+ product: firefox
+ job-name: linux64-beta-opt
+ treeherder:
+ platform: linux64-beta/opt
+ symbol: tc(B)
+ tier: 2
+ worker-type: aws-provisioner-v1/gecko-{level}-b-linux
+ worker:
+ max-run-time: 7200
+ env:
+ MOZCONFIG: browser/config/mozconfigs/linux64/beta
+ TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/linux64/releng.manifest"
+ coalesce-name: linux64-beta-opt
+ run:
+ using: mozharness
+ actions: [get-secrets build check-test update]
+ config:
+ - builds/releng_base_linux_64_builds.py
+ - balrog/production.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: public
+ need-xvfb: true
+ run-on-projects: [ 'trunk', 'try' ]
+
linux64/debug:
description: "Linux64 Debug"
index:
product: firefox
job-name: linux64-debug
treeherder:
platform: linux64/debug
symbol: tc(B)
--- a/taskcluster/ci/build/macosx.yml
+++ b/taskcluster/ci/build/macosx.yml
@@ -59,16 +59,42 @@ macosx64-devedition/opt:
config:
- builds/releng_base_mac_64_builds.py
- balrog/production.py
script: "mozharness/scripts/fx_desktop_build.py"
secrets: true
tooltool-downloads: internal
run-on-projects: ['mozilla-beta',]
+macosx64-beta/opt:
+ description: "MacOS X x64 Beta Configuration"
+ index:
+ product: firefox
+ job-name: macosx64-beta-opt
+ treeherder:
+ platform: osx-10-7-beta/opt
+ symbol: tc(B)
+ tier: 2
+ worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
+ worker:
+ docker-image: {in-tree: desktop-build}
+ max-run-time: 7200
+ env:
+ MOZCONFIG: browser/config/mozconfigs/macosx64/beta
+ TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/macosx64/cross-releng.manifest"
+ run:
+ using: mozharness
+ actions: [get-secrets build update]
+ config:
+ - builds/releng_base_mac_64_cross_builds.py
+ script: "mozharness/scripts/fx_desktop_build.py"
+ secrets: true
+ tooltool-downloads: internal
+ run-on-projects: [ 'trunk', 'try' ]
+
macosx64-noopt/debug:
description: "MacOS X x64 No-optimize Debug"
index:
product: firefox
job-name: macosx64-noopt-debug
treeherder:
platform: osx-10-7-noopt/debug
symbol: tc(B)
--- a/taskcluster/ci/build/windows.yml
+++ b/taskcluster/ci/build/windows.yml
@@ -141,16 +141,38 @@ win64/pgo:
TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
run:
using: mozharness
options: [enable-pgo]
script: mozharness/scripts/fx_desktop_build.py
config:
- builds/taskcluster_firefox_windows_64_opt.py
+win64-beta/opt:
+ description: "Win64 Opt Beta Configuration"
+ index:
+ product: firefox
+ job-name: win64-beta-opt
+ treeherder:
+ platform: windows2012-64-beta/opt
+ symbol: tc(B)
+ tier: 2
+ worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
+ worker:
+ max-run-time: 10800
+ env:
+ MOZCONFIG: browser/config/mozconfigs/win64/beta
+ TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
+ run:
+ using: mozharness
+ script: mozharness/scripts/fx_desktop_build.py
+ config:
+ - builds/taskcluster_firefox_windows_64_opt.py
+ run-on-projects: [ 'trunk', 'try' ]
+
win32-add-on-devel/opt:
description: "Windows32 add-on-devel"
index:
product: firefox
job-name: win32-add-on-devel
treeherder:
platform: windows2012-32-add-on-devel/opt
symbol: tc(B)
--- a/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
+++ b/taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
@@ -16,30 +16,32 @@ from __future__ import absolute_import,
# please keep me in lexical order
JOB_NAME_WHITELIST = set([
'android-aarch64-opt',
'android-api-15-debug',
'android-api-15-gradle-dependencies-opt',
'android-api-15-gradle-opt',
'android-api-15-opt',
+ 'android-api-15-opt-beta',
'android-api-15-old-id-opt',
'android-x86-opt',
'android-x86-old-id-opt',
'browser-haz-debug',
'linux-debug',
'linux-devedition',
'linux-opt',
'linux-pgo',
'linux64-add-on-devel',
'linux64-artifact-opt',
'linux64-asan-debug',
'linux64-asan-opt',
'linux64-base-toolchains-debug',
'linux64-base-toolchains-opt',
+ 'linux64-beta-opt',
'linux64-fuzzing-asan-opt',
'linux64-ccov-opt',
'linux64-clang-tidy',
'linux64-debug',
'linux64-devedition',
'linux64-jsdcov-opt',
'linux64-noopt-debug',
'linux64-opt',
@@ -49,16 +51,17 @@ JOB_NAME_WHITELIST = set([
'linux64-stylo-debug',
'linux64-stylo-opt',
'linux64-valgrind-opt',
'macosx64-add-on-devel',
'macosx64-clang-tidy',
'macosx64-debug',
'macosx64-noopt-debug',
'macosx64-opt',
+ 'macosx64-beta-opt',
'macosx64-devedition-opt',
'macosx64-st-an-debug',
'macosx64-st-an-opt',
'shell-haz-debug',
'sm-arm-sim-debug',
'sm-arm64-sim-debug',
'sm-asan-opt',
'sm-compacting-debug',
@@ -80,16 +83,17 @@ JOB_NAME_WHITELIST = set([
'win32-st-an-debug',
'win32-st-an-opt',
'win64-add-on-devel',
'win64-clang-tidy',
'win64-debug',
'win64-noopt-debug',
'win64-opt',
'win64-pgo',
+ 'win64-beta-opt',
'win64-st-an-debug',
'win64-st-an-opt',
'win64-asan-debug',
'win64-asan-opt',
])
JOB_NAME_WHITELIST_ERROR = """\
The gecko-v2 job name {} is not in the whitelist in gecko_v2_whitelist.py.