Bug 1362148 - Always collect build metrics; r=ted
☠☠ backed out by 1e2fe13035e1 ☠ ☠
authorGregory Szorc <gps@mozilla.com>
Thu, 04 May 2017 12:28:52 -0700
changeset 392209 c9812dd7d27a174c0ee46d44ec595fbe29c9e1db
parent 392208 387d8415d05e7f1dc96ed3adb441c54f232baf0d
child 392210 18afc87e7a68bc5e05a94dfcd4dfec0823692fe8
push id53
push userfmarier@mozilla.com
push dateMon, 15 May 2017 17:28:28 +0000
reviewersted
bugs1362148
milestone55.0a1
Bug 1362148 - Always collect build metrics; r=ted Previously, mozharness defined a separate action to collect build metrics. This required the script and/or config to define that action. Metrics collection for CI is important. So it should be enabled by default. This commit changes the "build" action/method to always call the metrics collection function after successful build. References to the "generate-build-stats" action have been removed because it is redundant. A side-effect of this change is we may generate build metrics where we weren't before. This could lead to e.g. duplicate entries in some Perfherder series. Let's see what breaks ;) MozReview-Commit-ID: 42UQI5YQTMC
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 generate-build-stats]
+            actions: [get-secrets build]
             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 generate-build-stats multi-l10n update]
+        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-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 generate-build-stats multi-l10n update]
+        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: 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 generate-build-stats multi-l10n update]
+        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
             - 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 generate-build-stats multi-l10n update]
+        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
@@ -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 generate-build-stats multi-l10n update]
+        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
             - 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 generate-build-stats multi-l10n update]
+        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-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 generate-build-stats check-test update]
+        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
 
@@ -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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        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
 
@@ -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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        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
         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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats check-test update]
+        actions: [get-secrets build 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 generate-build-stats update]
+        actions: [get-secrets build 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 generate-build-stats update]
+        actions: [get-secrets build 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 generate-build-stats update]
+        actions: [get-secrets build 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 generate-build-stats update]
+        actions: [get-secrets build 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 generate-build-stats update]
+       actions: [get-secrets build 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 generate-build-stats update]
+        actions: [get-secrets build 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 generate-build-stats update]
+            actions: [build 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 generate-build-stats update]
+            actions: [build 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 generate-build-stats]
+            actions: [build]
             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 generate-build-stats]
+            actions: [build]
             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 generate-build-stats valgrind-test]
+            actions: [get-secrets build 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,17 +6,16 @@ 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,17 +10,16 @@ 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,17 +9,16 @@ 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,17 +6,16 @@ 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,17 +6,16 @@ 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,17 +10,16 @@ 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,17 +10,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +2,16 @@ 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,17 +3,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +5,16 @@ 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,17 +4,16 @@ 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,17 +3,16 @@ 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,17 +3,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +2,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +2,16 @@ 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,17 +4,16 @@ 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,17 +4,16 @@ 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,17 +2,16 @@ 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,17 +4,16 @@ 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,17 +14,16 @@ 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,17 +14,16 @@ 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,17 +14,16 @@ 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,17 +14,16 @@ 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,17 +14,16 @@ 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,17 +15,16 @@ 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,17 +14,16 @@ 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,17 +14,16 @@ 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
@@ -1645,16 +1645,17 @@ or run without that action (ie: --no-{ac
             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()
@@ -1921,23 +1922,25 @@ 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,17 +34,16 @@ 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',