Bug 1372697 - Add build variant with beta configuration draft
authorGregory Szorc <gps@mozilla.com>
Mon, 19 Jun 2017 19:54:03 -0700
changeset 597070 e13b779d38bcceeac2ea17d9834dde80bdf106aa
parent 597069 ceff802b8410e23916ca95c27e8b83df758ae11d
child 634124 768f375089eacee4be875c1b3ad5aa236c1c619c
push id64817
push usergszorc@mozilla.com
push dateTue, 20 Jun 2017 03:06:21 +0000
bugs1372697
milestone56.0a1
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
taskcluster/ci/build/android.yml
taskcluster/ci/build/linux.yml
taskcluster/ci/build/macosx.yml
taskcluster/ci/build/windows.yml
taskcluster/taskgraph/transforms/gecko_v2_whitelist.py
--- 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.