Backed out changesets c9812dd7d27a and 387d8415d05e (bug 1362148) because it broke various Android jobs.
authorRyan VanderMeulen <ryanvm@gmail.com>
Fri, 12 May 2017 11:47:22 -0400
changeset 358089 1e2fe13035e13b7b4001ade3b48f226957cef5fc
parent 358088 99a21fe69212659a5d5c587b0886e2d2208e1e8f
child 358094 823615e72783e6563d72b20374f68b25030a88d5
child 358116 ff929100896131b0fe455f2f89ba48fba6e1a1d5
push id31812
push userryanvm@gmail.com
push dateFri, 12 May 2017 15:49:02 +0000
treeherdermozilla-central@1e2fe13035e1 [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
bugs1362148
milestone55.0a1
backs outc9812dd7d27a174c0ee46d44ec595fbe29c9e1db
387d8415d05e7f1dc96ed3adb441c54f232baf0d
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Backed out changesets c9812dd7d27a and 387d8415d05e (bug 1362148) because it broke various Android jobs.
taskcluster/ci/artifact-build/kind.yml
taskcluster/ci/build/android.yml
taskcluster/ci/build/linux.yml
taskcluster/ci/build/macosx.yml
taskcluster/ci/static-analysis/kind.yml
taskcluster/ci/valgrind/kind.yml
testing/mozharness/configs/builds/releng_base_android_64_builds.py
testing/mozharness/configs/builds/releng_base_linux_32_builds.py
testing/mozharness/configs/builds/releng_base_linux_64_builds.py
testing/mozharness/configs/builds/releng_base_mac_64_builds.py
testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py
testing/mozharness/configs/builds/releng_base_windows_32_builds.py
testing/mozharness/configs/builds/releng_base_windows_64_builds.py
testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/32_qr_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug_artifact.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_qr_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_opt.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_stylo.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_stylo_debug.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_qr_debug.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py
testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py
testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_win32_qr_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_win32_qr_opt.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_32_addondevel.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_32_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_32_opt.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_64_addondevel.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_64_debug.py
testing/mozharness/configs/builds/taskcluster_firefox_windows_64_opt.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
testing/mozharness/scripts/fx_desktop_build.py
--- a/taskcluster/ci/artifact-build/kind.yml
+++ b/taskcluster/ci/artifact-build/kind.yml
@@ -22,17 +22,17 @@ jobs:
             tier: 2
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             implementation: docker-worker
             docker-image: {in-tree: desktop-build}
             max-run-time: 36000
         run:
             using: mozharness
-            actions: [get-secrets build]
+            actions: [get-secrets build generate-build-stats]
             config:
                 - builds/releng_sub_linux_configs/64_artifact.py
                 - balrog/production.py
             script: "mozharness/scripts/fx_desktop_build.py"
             secrets: true
             tooltool-downloads: public
             need-xvfb: true
             keep-artifacts: false
--- a/taskcluster/ci/build/android.yml
+++ b/taskcluster/ci/build/android.yml
@@ -7,17 +7,17 @@ android-api-15/debug:
         platform: android-4-0-armv7-api15/debug
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-android
     worker:
         implementation: docker-worker
         max-run-time: 7200
     run:
         using: mozharness
-        actions: [get-secrets build multi-l10n update]
+        actions: [get-secrets build generate-build-stats 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-debug
         tooltool-downloads: internal
@@ -31,17 +31,17 @@ android-x86/opt:
         platform: android-4-2-x86/opt
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-android
     worker:
         implementation: docker-worker
         max-run-time: 7200
     run:
         using: mozharness
-        actions: [get-secrets build multi-l10n update]
+        actions: [get-secrets build generate-build-stats 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: x86
         tooltool-downloads: internal
@@ -58,17 +58,17 @@ android-x86-nightly/opt:
         platform: android-4-2-x86/opt
         symbol: tc(N)
     worker-type: aws-provisioner-v1/gecko-{level}-b-android
     worker:
         implementation: docker-worker
         max-run-time: 7200
     run:
         using: mozharness
-        actions: [get-secrets build multi-l10n update]
+        actions: [get-secrets build generate-build-stats multi-l10n update]
         config:
             - builds/releng_base_android_64_builds.py
             - 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: x86
@@ -83,17 +83,17 @@ android-api-15/opt:
         platform: android-4-0-armv7-api15/opt
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-android
     worker:
         implementation: docker-worker
         max-run-time: 7200
     run:
         using: mozharness
-        actions: [get-secrets build multi-l10n update]
+        actions: [get-secrets build generate-build-stats 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
@@ -110,17 +110,17 @@ android-api-15-nightly/opt:
         platform: android-4-0-armv7-api15/opt
         symbol: tc(N)
     worker-type: aws-provisioner-v1/gecko-{level}-b-android
     worker:
         implementation: docker-worker
         max-run-time: 7200
     run:
         using: mozharness
-        actions: [get-secrets build multi-l10n update]
+        actions: [get-secrets build generate-build-stats multi-l10n update]
         config:
             - builds/releng_base_android_64_builds.py
             - 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
@@ -149,17 +149,17 @@ android-api-15-gradle/opt:
           - name: public/build/geckoview_example.apk
             path: /home/worker/workspace/build/src/obj-firefox/gradle/build/mobile/android/geckoview_example/outputs/apk/geckoview_example-withGeckoBinaries.apk
             type: file
           - name: public/build
             path: /home/worker/artifacts/
             type: directory
     run:
         using: mozharness
-        actions: [get-secrets build multi-l10n update]
+        actions: [get-secrets build generate-build-stats 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-gradle
         tooltool-downloads: internal
--- a/taskcluster/ci/build/linux.yml
+++ b/taskcluster/ci/build/linux.yml
@@ -7,17 +7,17 @@ linux64/opt:
         platform: linux64/opt
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats 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
 
@@ -31,17 +31,17 @@ linux64/pgo:
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     coalesce-name: linux64-pgo
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         options: [enable-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
@@ -55,17 +55,17 @@ linux64/debug:
         platform: linux64/debug
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: debug
         tooltool-downloads: public
         need-xvfb: true
@@ -82,17 +82,17 @@ linux64-devedition-nightly/opt:
         platform: linux64-devedition/opt
         symbol: tc(N)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - disable_signing.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
@@ -109,17 +109,17 @@ linux/opt:
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     coalesce-name: opt_linux32
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_32_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
 
@@ -133,17 +133,17 @@ linux/debug:
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     coalesce-name: dbg_linux32
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_32_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: debug
         tooltool-downloads: public
         need-xvfb: true
@@ -158,17 +158,17 @@ linux/pgo:
         symbol: tc(B)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     coalesce-name: linux32-pgo
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         options: [enable-pgo]
         config:
             - builds/releng_base_linux_32_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
@@ -185,17 +185,17 @@ linux-devedition-nightly/opt:
         platform: linux32-devedition/opt
         symbol: tc(N)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_32_builds.py
             - disable_signing.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
@@ -214,17 +214,17 @@ linux-nightly/opt:
         platform: linux32/opt
         symbol: tc(N)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_32_builds.py
             - disable_signing.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
@@ -239,17 +239,17 @@ linux64-asan/opt:
         platform: linux64/asan
         symbol: tc(Bo)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: asan-tc
         tooltool-downloads: public
         need-xvfb: true
@@ -263,17 +263,17 @@ linux64-asan/debug:
         platform: linux64/asan
         symbol: tc(Bd)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: asan-tc-and-debug
         tooltool-downloads: public
         need-xvfb: true
@@ -290,17 +290,17 @@ linux64-nightly/opt:
         platform: linux64/opt
         symbol: tc(N)
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - disable_signing.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: public
         need-xvfb: true
@@ -315,17 +315,17 @@ linux64-stylo/opt:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 3600
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: stylo
         tooltool-downloads: public
     run-on-projects: [ 'stylo', 'autoland', 'mozilla-inbound', 'mozilla-central', 'try' ]
@@ -340,17 +340,17 @@ linux64-stylo/debug:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 3600
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: stylo-debug
         tooltool-downloads: public
     run-on-projects: [ 'stylo', 'autoland', 'mozilla-inbound', 'mozilla-central', 'try' ]
@@ -366,17 +366,17 @@ linux64-jsdcov/opt:
         tier: 2
     run-on-projects: [ ]
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats 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
 
@@ -392,17 +392,17 @@ linux64-ccov/opt:
         tier: 2
     run-on-projects: [ ]
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: code-coverage
         tooltool-downloads: public
         need-xvfb: true
@@ -417,17 +417,17 @@ linux64-add-on-devel/opt:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: add-on-devel
         tooltool-downloads: public
         need-xvfb: true
@@ -443,17 +443,17 @@ linux64-qr/debug:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: qr-debug
         tooltool-downloads: public
         need-xvfb: true
@@ -469,17 +469,17 @@ linux64-qr/opt:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: qr-opt
         tooltool-downloads: public
         need-xvfb: true
@@ -495,17 +495,17 @@ linux-qr/opt:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_32_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: qr-opt
         tooltool-downloads: public
         need-xvfb: true
@@ -522,17 +522,17 @@ linux-qr/debug:
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-linux
     worker:
         implementation: docker-worker
         max-run-time: 36000
     coalesce-name: dbg_linux32
     run:
         using: mozharness
-        actions: [get-secrets build check-test update]
+        actions: [get-secrets build generate-build-stats check-test update]
         config:
             - builds/releng_base_linux_32_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: qr-debug
         tooltool-downloads: public
         need-xvfb: true
--- a/taskcluster/ci/build/macosx.yml
+++ b/taskcluster/ci/build/macosx.yml
@@ -8,17 +8,17 @@ macosx64/debug:
         symbol: tc(B)
         tier: 1
     worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build update]
+        actions: [get-secrets build generate-build-stats update]
         config:
             - builds/releng_base_mac_64_cross_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: cross-debug
         tooltool-downloads: internal
 
@@ -31,17 +31,17 @@ macosx64/opt:
         platform: osx-10-7/opt
         symbol: tc(B)
         tier: 2
     worker-type: buildbot-bridge/buildbot-bridge
     worker:
         implementation: buildbot-bridge
     run:
         using: mozharness
-        actions: [get-secrets build update]
+        actions: [get-secrets build generate-build-stats update]
         config:
             - builds/releng_base_mac_64_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: internal
 
 macosx64-qr/debug:
@@ -54,17 +54,17 @@ macosx64-qr/debug:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build update]
+        actions: [get-secrets build generate-build-stats update]
         config:
             - builds/releng_base_mac_64_cross_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: cross-qr-debug
         tooltool-downloads: internal
     run-on-projects: [ 'graphics' ]
@@ -79,17 +79,17 @@ macosx64-qr/opt:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build update]
+        actions: [get-secrets build generate-build-stats update]
         config:
             - builds/releng_base_mac_64_cross_builds.py
             - balrog/production.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         custom-build-variant-cfg: cross-qr-opt
         tooltool-downloads: internal
     run-on-projects: [ 'graphics' ]
@@ -104,17 +104,17 @@ macosx64-add-on-devel/opt:
         symbol: tc(B)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
        using: mozharness
-       actions: [get-secrets build update]
+       actions: [get-secrets build generate-build-stats update]
        config:
             - builds/releng_base_mac_64_cross_builds.py
             - balrog/production.py
        script: "mozharness/scripts/fx_desktop_build.py"
        secrets: true
        custom-build-variant-cfg: add-on-devel
        tooltool-downloads: internal
     run-on-projects: [ 'mozilla-beta', 'mozilla-release', 'mozilla-esr45' ]
@@ -132,17 +132,17 @@ macosx64-nightly/opt:
         symbol: tc(N)
         tier: 2
     worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
     worker:
         implementation: docker-worker
         max-run-time: 36000
     run:
         using: mozharness
-        actions: [get-secrets build update]
+        actions: [get-secrets build generate-build-stats update]
         config:
             - builds/releng_base_mac_64_cross_builds.py
             - disable_signing.py
             - taskcluster_nightly.py
         script: "mozharness/scripts/fx_desktop_build.py"
         secrets: true
         tooltool-downloads: internal
     run-on-projects: []
--- a/taskcluster/ci/static-analysis/kind.yml
+++ b/taskcluster/ci/static-analysis/kind.yml
@@ -26,17 +26,17 @@ jobs:
             platform: osx-10-7/debug
         worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
         worker:
             implementation: docker-worker
             docker-image: {in-tree: desktop-build}
             max-run-time: 36000
         run:
             using: mozharness
-            actions: [build update]
+            actions: [build generate-build-stats update]
             config:
                 - builds/releng_base_mac_64_cross_builds.py
                 - balrog/production.py
             # enables static analysis.
             custom-build-variant-cfg: cross-debug-st-an
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: internal
             keep-artifacts: false
@@ -49,17 +49,17 @@ jobs:
             platform: osx-10-7/opt
         worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
         worker:
             implementation: docker-worker
             docker-image: {in-tree: desktop-build}
             max-run-time: 36000
         run:
             using: mozharness
-            actions: [build update]
+            actions: [build generate-build-stats update]
             config:
                 - builds/releng_base_mac_64_cross_builds.py
                 - balrog/production.py
             # enables static analysis.
             custom-build-variant-cfg: cross-opt-st-an
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: internal
             keep-artifacts: false
@@ -72,17 +72,17 @@ jobs:
             platform: linux64/debug
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             implementation: docker-worker
             docker-image: {in-tree: desktop-build}
             max-run-time: 36000
         run:
             using: mozharness
-            actions: [build]
+            actions: [build generate-build-stats]
             config:
                 - builds/releng_sub_linux_configs/64_stat_and_debug.py
                 - balrog/production.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
             keep-artifacts: false
 
     linux64-st-an/opt:
@@ -93,17 +93,17 @@ jobs:
             platform: linux64/opt
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             implementation: docker-worker
             docker-image: {in-tree: desktop-build}
             max-run-time: 36000
         run:
             using: mozharness
-            actions: [build]
+            actions: [build generate-build-stats]
             config:
                 - builds/releng_sub_linux_configs/64_stat_and_opt.py
                 - balrog/production.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
             keep-artifacts: false
 
     win32-st-an/debug:
--- a/taskcluster/ci/valgrind/kind.yml
+++ b/taskcluster/ci/valgrind/kind.yml
@@ -22,17 +22,17 @@ jobs:
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             implementation: docker-worker
             docker-image: {in-tree: desktop-build}
             max-run-time: 72000
         run:
             using: mozharness
-            actions: [get-secrets build valgrind-test]
+            actions: [get-secrets build generate-build-stats valgrind-test]
             custom-build-variant-cfg: valgrind
             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
--- a/testing/mozharness/configs/builds/releng_base_android_64_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_android_64_builds.py
@@ -6,16 +6,17 @@ config = {
 
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'multi-l10n',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
--- a/testing/mozharness/configs/builds/releng_base_linux_32_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_linux_32_builds.py
@@ -10,16 +10,17 @@ config = {
 
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
--- a/testing/mozharness/configs/builds/releng_base_linux_64_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_linux_64_builds.py
@@ -9,16 +9,17 @@ config = {
     # releng_base_linux_64_builds.py
 
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
--- a/testing/mozharness/configs/builds/releng_base_mac_64_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_mac_64_builds.py
@@ -6,16 +6,17 @@ config = {
     ######## MACOSX GENERIC CONFIG KEYS/VAlUES
 
     'default_actions': [
         'clobber',
         'clone-tools',
         # 'setup-mock',
         'checkout-sources',
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
--- a/testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_mac_64_cross_builds.py
@@ -6,16 +6,17 @@ config = {
     ######## MACOSX CROSS GENERIC CONFIG KEYS/VAlUES
 
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'build',
+        'generate-build-stats',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
     },
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
--- a/testing/mozharness/configs/builds/releng_base_windows_32_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_windows_32_builds.py
@@ -10,16 +10,17 @@ config = {
     # releng_base_windows_32_builds.py
 
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": [
--- a/testing/mozharness/configs/builds/releng_base_windows_64_builds.py
+++ b/testing/mozharness/configs/builds/releng_base_windows_64_builds.py
@@ -10,16 +10,17 @@ config = {
     # releng_base_windows_64_builds.py
 
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": [
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'debug_build': True,
     'stage_platform': 'linux-debug',
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_qr_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_qr_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'debug_build': True,
     'stage_platform': 'linux-debug',
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_add-on-devel.py
@@ -2,16 +2,17 @@ import os
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
 #        'sendchange',
         'check-test',
         # 'update',
     ],
     'stage_platform': 'linux64-add-on-devel',
     'publish_nightly_en_US_routes': False,
     'build_type': 'add-on-devel',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py
@@ -3,16 +3,17 @@ import os
 config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'sendchange',
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
     },
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         # 'update',
     ],
     'stage_platform': 'linux64-asan',
     'publish_nightly_en_US_routes': False,
     'build_type': 'asan',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_and_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         # 'update',
     ],
     'stage_platform': 'linux64-asan-debug',
     'publish_nightly_en_US_routes': False,
     'build_type': 'asan-debug',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         # 'update',
     ],
     'stage_platform': 'linux64-asan',
     'publish_nightly_en_US_routes': False,
     'build_type': 'asan',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_asan_tc_and_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         # 'update',
     ],
     'stage_platform': 'linux64-asan-debug',
     'publish_nightly_en_US_routes': False,
     'build_type': 'asan-debug',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_code_coverage.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'linux64-ccov',
     'platform_supports_post_upload_to_latest': False,
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'linux64-debug',
     'debug_build': True,
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug_artifact.py
@@ -5,16 +5,17 @@ MOZ_OBJDIR = 'obj-firefox'
 config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'sendchange',
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
     },
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     'enable_ccache': True,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_qr_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_qr_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'linux64-debug',
     'debug_build': True,
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_debug.py
@@ -3,16 +3,17 @@ import os
 config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
     },
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_opt.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stat_and_opt.py
@@ -3,16 +3,17 @@ import os
 config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
     ],
     "buildbot_json_path": "buildprops.json",
     'exes': {
         "buildbot": "/tools/buildbot/bin/buildbot",
     },
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stylo.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stylo.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'linux64-stylo',
     'enable_signing': False,
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stylo_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_stylo_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'linux64-stylo-debug',
     'debug_build': True,
     'enable_signing': False,
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_valgrind.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         #'setup-mock',
         'build',
+        # 'generate-build-stats',
         #'upload-files',
         #'sendchange',
         'check-test',
         'valgrind-test',
         #'update',
     ],
     'stage_platform': 'linux64-valgrind',
     'publish_nightly_en_US_routes': False,
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_add-on-devel.py
@@ -2,16 +2,17 @@ import os
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
 #        'setup-mock',
         'build',
+#        'generate-build-stats',
         'upload-files',
 #        'sendchange',
         'check-test',
 #        'update',
     ],
     'stage_platform': 'macosx64-add-on-devel',
     'publish_nightly_en_US_routes': False,
     'build_type': 'add-on-devel',
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'macosx64-debug',
     'debug_build': True,
     'objdir': 'obj-firefox',
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_qr_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_qr_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'macosx64-debug',
     'debug_build': True,
     'objdir': 'obj-firefox',
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock',
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'macosx64-debug',
     'debug_build': True,
     'objdir': 'obj-firefox',
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock',
         'build',
+        # 'generate-build-stats',
         'upload-files',
         'sendchange',
         'update',  # decided by query_is_nightly()
     ],
     'debug_build': True,
     'stage_platform': 'macosx64-st-an-debug',
     'build_type': 'st-an-debug',
     'tooltool_manifest_src': "browser/config/tooltool-manifests/macosx64/\
--- a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_add-on-devel.py
@@ -2,16 +2,17 @@ import os
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+#        'generate-build-stats',
         'upload-files',
 #        'sendchange',
         'check-test',
 #        'update',
     ],
     'stage_platform': 'win32-add-on-devel',
     'build_type': 'add-on-devel',
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'win32-debug',
     'debug_build': True,
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+        # 'generate-build-stats',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'win32-st-an-debug',
     'debug_build': True,
     'enable_signing': False,
     'enable_talos_sendchange': False,
     'enable_unittest_sendchange': False,
     'tooltool_manifest_src': "browser/config/tooltool-manifests/win32/\
--- a/testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_add-on-devel.py
@@ -2,16 +2,17 @@ import os
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+#        'generate-build-stats',
         'upload-files',
 #        'sendchange',
         'check-test',
 #        'update',
     ],
     'stage_platform': 'win64-add-on-devel',
     'build_type': 'add-on-devel',
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_windows_configs/64_debug.py
@@ -4,16 +4,17 @@ MOZ_OBJDIR = 'obj-firefox'
 
 config = {
     'default_actions': [
         'clobber',
         'clone-tools',
         'checkout-sources',
         # 'setup-mock', windows do not use mock
         'build',
+        'generate-build-stats',
         'upload-files',
         'sendchange',
         'check-test',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'win64-debug',
     'debug_build': True,
     'enable_talos_sendchange': False,
--- a/testing/mozharness/configs/builds/taskcluster_firefox_win32_qr_debug.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_win32_qr_debug.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_win32_qr_opt.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_win32_qr_opt.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_addondevel.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_addondevel.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_debug.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_debug.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_opt.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_windows_32_opt.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_64_addondevel.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_windows_64_addondevel.py
@@ -15,16 +15,17 @@ config = {
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
     # - taskcluster_firefox_win64_addonsdevel
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_64_debug.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_windows_64_debug.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/configs/builds/taskcluster_firefox_windows_64_opt.py
+++ b/testing/mozharness/configs/builds/taskcluster_firefox_windows_64_opt.py
@@ -14,16 +14,17 @@ config = {
     # - taskcluster_firefox_win32_clang
     # - taskcluster_firefox_win32_clang_debug
     # - taskcluster_firefox_win64_clang
     # - taskcluster_firefox_win64_clang_debug
 
     'default_actions': [
         'clone-tools',
         'build',
+        'generate-build-stats',
         'check-test',
     ],
     'exes': {
         'virtualenv': [
             sys.executable,
             os.path.join(
                 os.getcwd(), 'build', 'src', 'python', 'virtualenv', 'virtualenv.py'
             )
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -1644,19 +1644,16 @@ or run without that action (ie: --no-{ac
         if return_code:
             self.return_code = self.worst_level(
                 EXIT_STATUS_DICT[TBPL_FAILURE],  self.return_code,
                 AUTOMATION_EXIT_CODES[::-1]
             )
             self.fatal("'mach build' did not run successfully. Please check "
                        "log for errors.")
 
-        self.generate_build_props(console_output=True, halt_on_failure=True)
-        self._generate_build_stats()
-
     def multi_l10n(self):
         if not self.query_is_nightly():
             self.info("Not a nightly build, skipping multi l10n.")
             return
         self._initialize_taskcluster()
 
         dirs = self.query_abs_dirs()
         base_work_dir = dirs['base_work_dir']
@@ -1740,18 +1737,20 @@ or run without that action (ie: --no-{ac
             upload_files_cmd,
             cwd=objdir,
         )
         files = shlex.split(output)
         abs_files = [os.path.abspath(os.path.join(objdir, f)) for f in files]
         self._taskcluster_upload(abs_files, self.routes_json['l10n'],
                                  locale='multi')
 
-    def postflight_build(self):
+    def postflight_build(self, console_output=True):
         """grabs properties from post build and calls ccache -s"""
+        self.generate_build_props(console_output=console_output,
+                                  halt_on_failure=True)
         if self.config.get('enable_ccache'):
             self._ccache_s()
 
         # A list of argument lists.  Better names gratefully accepted!
         mach_commands = self.config.get('postflight_build_mach_commands', [])
         for mach_command in mach_commands:
             self._execute_postflight_build_mach_command(mach_command)
 
@@ -1922,25 +1921,23 @@ or run without that action (ie: --no-{ac
         yield {
             'name': 'sccache requests_not_cacheable',
             'value': stats['stats']['requests_not_cacheable'],
             'extraOptions': self.perfherder_resource_options(),
             'alertThreshold': 50.0,
             'subtests': [],
         }
 
-    def _generate_build_stats(self):
+    def generate_build_stats(self):
         """grab build stats following a compile.
 
         This action handles all statistics from a build: 'count_ctors'
         and then posts to graph server the results.
         We only post to graph server for non nightly build
         """
-        self.info('Collecting build metrics')
-
         if self.config.get('forced_artifact_build'):
             self.info('Skipping due to forced artifact build.')
             return
 
         import tarfile
         import zipfile
         c = self.config
 
--- a/testing/mozharness/scripts/fx_desktop_build.py
+++ b/testing/mozharness/scripts/fx_desktop_build.py
@@ -34,16 +34,17 @@ class FxDesktopBuild(BuildScript, TryToo
             'config_options': BUILD_BASE_CONFIG_OPTIONS + copy.deepcopy(try_config_options),
             'all_actions': [
                 'get-secrets',
                 'clobber',
                 'clone-tools',
                 'checkout-sources',
                 'setup-mock',
                 'build',
+                'generate-build-stats',
                 'upload-files',  # upload from BB to TC
                 'sendchange',
                 'check-test',
                 'valgrind-test',
                 'package-source',
                 'generate-source-signing-manifest',
                 'multi-l10n',
                 'update',