Bug 1465659 - Move perfherder extra options from mozharness to taskcluster. r?build draft
authorMike Hommey <mh+mozilla@glandium.org>
Thu, 31 May 2018 13:02:38 +0900
changeset 801963 3c00e5750c348181d6be1acdfddad92ffe838ecb
parent 801962 e6e6fc6d754dbf8f156dd114751e4d1ede91dba2
child 802010 ef68d7448c140538ff023deacb1b5bc18944154e
child 802104 cc9cf42329fc88d8600d36c07ef107bfce971783
push id111792
push userbmo:mh+mozilla@glandium.org
push dateThu, 31 May 2018 04:48:26 +0000
reviewersbuild
bugs1465659
milestone62.0a1
Bug 1465659 - Move perfherder extra options from mozharness to taskcluster. r?build While some builds have a PERFHERDER_EXTRA_OPTIONS environment set on the taskcluster side, many others have the equivalent set at the mozharness level. But only the former are actually linted against, which, unsurprisingly, translates to conflicting values between some of the mozharness configs. So we move those configurations to taskcluster, enable the lint on all the kinds that look like builds (based on them using the build_attrs transform), and adjust the values to stop conflicting. Notably, for searchfox and static-analysis-autotest.
taskcluster/ci/artifact-build/kind.yml
taskcluster/ci/hazard/kind.yml
taskcluster/ci/searchfox/kind.yml
taskcluster/ci/spidermonkey/kind.yml
taskcluster/ci/static-analysis-autotest/kind.yml
taskcluster/ci/static-analysis/kind.yml
taskcluster/ci/valgrind/kind.yml
testing/mozharness/configs/builds/releng_sub_linux_configs/32_artifact.py
testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug_artifact.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_debug_artifact.py
testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_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_valgrind.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_artifact.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_artifact.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug_artifact.py
testing/mozharness/configs/builds/releng_sub_mac_configs/64_stat_and_debug.py
testing/mozharness/configs/builds/releng_sub_windows_configs/32_stat_and_debug.py
testing/mozharness/configs/builds/taskcluster_sub_win32/clang.py
testing/mozharness/configs/builds/taskcluster_sub_win32/clang_debug.py
testing/mozharness/configs/builds/taskcluster_sub_win64/clang.py
testing/mozharness/configs/builds/taskcluster_sub_win64/clang_debug.py
testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py
testing/mozharness/mozharness/base/python.py
testing/mozharness/mozharness/mozilla/building/buildbase.py
--- a/taskcluster/ci/artifact-build/kind.yml
+++ b/taskcluster/ci/artifact-build/kind.yml
@@ -4,16 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 jobs:
     linux64-artifact/opt:
         description: "Linux64 Opt Artifact Build"
         index:
@@ -23,16 +24,18 @@ jobs:
             platform: linux64/opt
             kind: build
             symbol: AB
             tier: 2
         run-on-projects: ['trunk', 'try']
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             max-run-time: 36000
+            env:
+                PERFHERDER_EXTRA_OPTIONS: artifact
         run:
             using: mozharness
             actions: [get-secrets build]
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_sub_linux_configs/64_artifact.py
             script: "mozharness/scripts/fx_desktop_build.py"
             secrets: true
--- a/taskcluster/ci/hazard/kind.yml
+++ b/taskcluster/ci/hazard/kind.yml
@@ -4,16 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 job-defaults:
     treeherder:
         kind: build
         tier: 1
--- a/taskcluster/ci/searchfox/kind.yml
+++ b/taskcluster/ci/searchfox/kind.yml
@@ -4,16 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 job-defaults:
     index:
         product: firefox
     treeherder:
@@ -27,16 +28,18 @@ jobs:
         description: "Linux64 Debug Searchfox"
         index:
             job-name: linux64-searchfox-debug
         treeherder:
             platform: linux64/debug
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             max-run-time: 36000
+            env:
+                PERFHERDER_EXTRA_OPTIONS: searchfox
         run:
             using: mozharness
             actions: [build]
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_sub_linux_configs/64_searchfox_and_debug.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
@@ -51,16 +54,17 @@ jobs:
             job-name: macosx64-searchfox-debug
         treeherder:
             platform: osx-cross/debug
         worker-type: aws-provisioner-v1/gecko-{level}-b-macosx64
         worker:
             max-run-time: 36000
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/macosx64/cross-releng.manifest"
+                PERFHERDER_EXTRA_OPTIONS: searchfox
         run:
             using: mozharness
             actions: [get-secrets build update]
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_base_mac_64_cross_builds.py
             script: "mozharness/scripts/fx_desktop_build.py"
             custom-build-variant-cfg: cross-debug-searchfox
@@ -84,16 +88,17 @@ jobs:
             job-name: win64-searchfox-debug
         treeherder:
             platform: windows2012-64/debug
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
+                PERFHERDER_EXTRA_OPTIONS: searchfox
         run:
             using: mozharness
             options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
                 - builds/taskcluster_base_windows.py
                 - builds/taskcluster_base_win64.py
--- a/taskcluster/ci/spidermonkey/kind.yml
+++ b/taskcluster/ci/spidermonkey/kind.yml
@@ -5,16 +5,17 @@
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.spidermonkey:transforms
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 job-defaults:
     treeherder:
         kind: build
         tier: 1
--- a/taskcluster/ci/static-analysis-autotest/kind.yml
+++ b/taskcluster/ci/static-analysis-autotest/kind.yml
@@ -4,16 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 job-defaults:
     index:
         product: firefox
     treeherder:
@@ -26,16 +27,18 @@ jobs:
         description: "Linux64 Debug Static Analysis Autotest"
         index:
             job-name: linux64-st-autotest-debug
         treeherder:
             platform: linux64/debug
         worker-type: aws-provisioner-v1/gecko-t-linux-large
         worker:
             max-run-time: 3600
+            env:
+                PERFHERDER_EXTRA_OPTIONS: static-analysis-autotest
         run:
             using: mozharness
             actions: [static-analysis-autotest]
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_sub_linux_configs/64_stat_and_debug.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
--- a/taskcluster/ci/static-analysis/kind.yml
+++ b/taskcluster/ci/static-analysis/kind.yml
@@ -4,16 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 job-defaults:
     index:
         product: firefox
     treeherder:
@@ -26,16 +27,18 @@ jobs:
         description: "Linux64 Debug Static Analysis"
         index:
             job-name: linux64-st-an-debug
         treeherder:
             platform: linux64/debug
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             max-run-time: 36000
+            env:
+                PERFHERDER_EXTRA_OPTIONS: static-analysis
         run:
             using: mozharness
             actions: [build]
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_sub_linux_configs/64_stat_and_debug.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
@@ -49,16 +52,18 @@ jobs:
         description: "Linux64 Opt Static Analysis"
         index:
             job-name: linux64-st-an-opt
         treeherder:
             platform: linux64/opt
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             max-run-time: 36000
+            env:
+                PERFHERDER_EXTRA_OPTIONS: static-analysis
         run:
             using: mozharness
             actions: [build]
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_sub_linux_configs/64_stat_and_opt.py
             script: "mozharness/scripts/fx_desktop_build.py"
             tooltool-downloads: public
@@ -77,16 +82,17 @@ jobs:
             platform: windows2012-32/debug
             symbol: S
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
+                PERFHERDER_EXTRA_OPTIONS: static-analysis
         run:
             using: mozharness
             options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
                 - builds/taskcluster_base_windows.py
                 - builds/taskcluster_base_win32.py
@@ -105,16 +111,17 @@ jobs:
             platform: windows2012-32/opt
             symbol: S
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win32/releng.manifest"
+                PERFHERDER_EXTRA_OPTIONS: static-analysis
         run:
             using: mozharness
             options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
                 - builds/taskcluster_base_windows.py
                 - builds/taskcluster_base_win32.py
@@ -133,16 +140,17 @@ jobs:
             platform: windows2012-64/debug
             symbol: S
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
+                PERFHERDER_EXTRA_OPTIONS: static-analysis
         run:
             using: mozharness
             options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
                 - builds/taskcluster_base_windows.py
                 - builds/taskcluster_base_win64.py
@@ -161,16 +169,17 @@ jobs:
             platform: windows2012-64/opt
             symbol: S
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-win2012
         worker:
             max-run-time: 7200
             env:
                 TOOLTOOL_MANIFEST: "browser/config/tooltool-manifests/win64/releng.manifest"
+                PERFHERDER_EXTRA_OPTIONS: static-analysis
         run:
             using: mozharness
             options: [append-env-variables-from-configs]
             script: mozharness/scripts/fx_desktop_build.py
             config:
                 - builds/releng_base_firefox.py
                 - builds/taskcluster_base_windows.py
                 - builds/taskcluster_base_win64.py
--- a/taskcluster/ci/valgrind/kind.yml
+++ b/taskcluster/ci/valgrind/kind.yml
@@ -4,16 +4,17 @@
 
 loader: taskgraph.loader.transform:loader
 
 kind-dependencies:
     - toolchain
 
 transforms:
     - taskgraph.transforms.build_attrs:transforms
+    - taskgraph.transforms.build_lints:transforms
     - taskgraph.transforms.use_toolchains:transforms
     - taskgraph.transforms.job:transforms
     - taskgraph.transforms.task:transforms
 
 jobs:
     linux64-valgrind/opt:
         description: "Linux64 Valgrind Opt"
         index:
@@ -23,16 +24,18 @@ jobs:
             platform: linux64/opt
             symbol: V
             kind: build
             tier: 1
         worker-type: aws-provisioner-v1/gecko-{level}-b-linux
         worker:
             docker-image: {in-tree: valgrind-build}
             max-run-time: 72000
+            env:
+                PERFHERDER_EXTRA_OPTIONS: valgrind
         run:
             using: mozharness
             actions: [get-secrets build valgrind-test]
             custom-build-variant-cfg: valgrind
             config:
                 - builds/releng_base_firefox.py
                 - builds/releng_base_linux_64_builds.py
             script: "mozharness/scripts/fx_desktop_build.py"
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_artifact.py
@@ -11,17 +11,16 @@ config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
     # allows triggering of dependent jobs when --artifact try syntax is detected
-    'perfherder_extra_options': ['artifact'],
     #########################################################################
 
 
     #########################################################################
     ###### 32 bit specific ######
     'base_name': 'Linux_%(branch)s_Artifact_build',
     'platform': 'linux',
     'stage_platform': 'linux',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/32_debug_artifact.py
@@ -13,17 +13,16 @@ config = {
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
     # debug specific
     'debug_build': True,
     # allows triggering of test jobs when --artifact try syntax is detected
-    'perfherder_extra_options': ['artifact'],
     #########################################################################
 
 
     #########################################################################
     ###### 32 bit specific ######
     'base_name': 'Linux_%(branch)s_Artifact_build',
     'platform': 'linux',
     'stage_platform': 'linux-debug',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_artifact.py
@@ -12,17 +12,16 @@ config = {
          'secret_name': 'project/releng/gecko/build/level-%(scm-level)s/gapi.data',
          'min_scm_level': 1},
         {'filename': '/builds/mozilla-desktop-geoloc-api.key',
          'secret_name': 'project/releng/gecko/build/level-%(scm-level)s/mozilla-desktop-geoloc-api.key',
          'min_scm_level': 2, 'default': 'try-build-has-no-secrets'},
     ],
     'vcs_share_base': '/builds/hg-shared',
     # allows triggering of dependent jobs when --artifact try syntax is detected
-    'perfherder_extra_options': ['artifact'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'Linux_x86-64_%(branch)s_Artifact_build',
     'platform': 'linux64',
     'stage_platform': 'linux64',
--- 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
@@ -6,17 +6,16 @@ config = {
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     'vcs_share_base': '/builds/hg-shared',
     # debug specific
     'debug_build': True,
     # decides whether we want to use moz_sign_cmd in env
     # allows triggering of test jobs when --artifact try syntax is detected
-    'perfherder_extra_options': ['artifact'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'Linux_x86-64_%(branch)s_Artifact_build',
     'platform': 'linux64',
     'stage_platform': 'linux64-debug',
--- a/testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py
+++ b/testing/mozharness/configs/builds/releng_sub_linux_configs/64_searchfox_and_debug.py
@@ -4,17 +4,16 @@ config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
-    'perfherder_extra_options': ['static-analysis'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'Linux_x86-64_%(branch)s_Searchfox',
     'platform': 'linux64',
     'stage_platform': 'linux64-searchfox-opt',
--- 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
@@ -4,17 +4,16 @@ config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
-    'perfherder_extra_options': ['static-analysis'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'Linux_x86-64_%(branch)s_Static_Analysis',
     'platform': 'linux64',
     'stage_platform': 'linux64-st-an-opt',
--- 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
@@ -4,17 +4,16 @@ config = {
     # note: overridden by MOZHARNESS_ACTIONS in TaskCluster tasks
     'default_actions': [
         'clobber',
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
-    'perfherder_extra_options': ['static-analysis'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'Linux_x86-64_%(branch)s_Static_Analysis',
     'platform': 'linux64',
     'stage_platform': 'linux64-st-an',
--- 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 @@ config = {
     'default_actions': [
         'clobber',
         'build',
         'check-test',
         'valgrind-test',
         #'update',
     ],
     'stage_platform': 'linux64-valgrind',
-    'perfherder_extra_options': ['valgrind'],
     #### 64 bit build specific #####
     'env': {
         'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
         'DISPLAY': ':2',
         'HG_SHARE_BASE_DIR': '/builds/hg-shared',
         'MOZ_OBJDIR': '%(abs_obj_dir)s',
         'TINDERBOX_OUTPUT': '1',
         'TOOLTOOL_CACHE': '/builds/tooltool_cache',
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_artifact.py
@@ -6,17 +6,16 @@ config = {
 
     'default_actions': [
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
     # allows triggering of dependent jobs when --artifact try syntax is detected
-    'perfherder_extra_options': ['artifact'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'OS X 10.7 %(branch)s_Artifact_build',
     'platform': 'macosx64',
     'stage_platform': 'macosx64',
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_artifact.py
@@ -1,4 +1,3 @@
 config = {
-    'perfherder_extra_options': ['artifact'],
     'mozconfig_variant': 'artifact',
 }
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_artifact.py
@@ -1,4 +1,3 @@
 config = {
-    'perfherder_extra_options': ['artifact'],
     'mozconfig_variant': 'debug-artifact',
 }
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_cross_debug_searchfox.py
@@ -3,17 +3,16 @@ import os
 config = {
     'default_actions': [
         'clobber',
         'build',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'macosx64-searchfox-debug',
     'debug_build': True,
-    'perfherder_extra_options': ['static-analysis'],
     #### 64 bit build specific #####
     'env': {
         'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
         'HG_SHARE_BASE_DIR': '/builds/hg-shared',
         'MOZ_OBJDIR': '%(abs_obj_dir)s',
         'TINDERBOX_OUTPUT': '1',
         'TOOLTOOL_CACHE': '/builds/tooltool_cache',
         'TOOLTOOL_HOME': '/builds',
--- a/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug_artifact.py
+++ b/testing/mozharness/configs/builds/releng_sub_mac_configs/64_debug_artifact.py
@@ -8,17 +8,16 @@ config = {
         'build',
     ],
     'app_ini_path': '%(obj_dir)s/dist/bin/application.ini',
     # decides whether we want to use moz_sign_cmd in env
     'vcs_share_base': '/builds/hg-shared',
     # debug specific
     'debug_build': True,
     # allows triggering of test jobs when --artifact try syntax is detected
-    'perfherder_extra_options': ['artifact'],
     #########################################################################
 
 
     #########################################################################
     ###### 64 bit specific ######
     'base_name': 'OS X 10.7 %(branch)s_Artifact_build',
     'platform': 'macosx64',
     'stage_platform': 'macosx64-debug',
--- 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
@@ -5,17 +5,16 @@ config = {
         'clobber',
         'build',
         'update',  # decided by query_is_nightly()
     ],
     'debug_build': True,
     'stage_platform': 'macosx64-st-an-debug',
     'tooltool_manifest_src': "browser/config/tooltool-manifests/macosx64/\
 clang.manifest",
-    'perfherder_extra_options': ['static-analysis'],
     #### 64 bit build specific #####
     'env': {
         'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
         'HG_SHARE_BASE_DIR': '/builds/hg-shared',
         'MOZ_OBJDIR': '%(abs_obj_dir)s',
         'TINDERBOX_OUTPUT': '1',
         'TOOLTOOL_CACHE': '/builds/tooltool_cache',
         'TOOLTOOL_HOME': '/builds',
--- 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
@@ -5,17 +5,16 @@ config = {
         'clobber',
         'build',
         'update',  # decided by query_is_nightly()
     ],
     'stage_platform': 'win32-st-an-debug',
     'debug_build': True,
     'tooltool_manifest_src': "browser/config/tooltool-manifests/win32/\
 releng.manifest",
-    'perfherder_extra_options': ['static-analysis'],
     #### 32 bit build specific #####
     'env': {
         'HG_SHARE_BASE_DIR': 'C:/builds/hg-shared',
         'MOZBUILD_STATE_PATH': os.path.join(os.getcwd(), '.mozbuild'),
         'MOZ_CRASHREPORTER_NO_REPORT': '1',
         'MOZ_OBJDIR': '%(abs_obj_dir)s',
         'PATH': 'C:/mozilla-build/nsis-3.01;C:/mozilla-build/python27;'
                 '%s' % (os.environ.get('path')),
--- a/testing/mozharness/configs/builds/taskcluster_sub_win32/clang.py
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/clang.py
@@ -1,6 +1,5 @@
 config = {
-    'perfherder_extra_options': ['static-analysis'],
     'stage_platform': 'win32-st-an',
     'mozconfig_variant': 'clang',
     'artifact_flag_build_variant_in_try': None,
 }
--- a/testing/mozharness/configs/builds/taskcluster_sub_win32/clang_debug.py
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win32/clang_debug.py
@@ -1,10 +1,9 @@
 config = {
-    'perfherder_extra_options': ['static-analysis'],
     'stage_platform': 'win32-st-an-debug',
     'debug_build': True,
     'env': {
         'XPCOM_DEBUG_BREAK': 'stack-and-abort',
     },
     'mozconfig_variant': 'clang-debug',
     'artifact_flag_build_variant_in_try': None,
 }
--- a/testing/mozharness/configs/builds/taskcluster_sub_win64/clang.py
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/clang.py
@@ -1,6 +1,5 @@
 config = {
-    'perfherder_extra_options': ['static-analysis'],
     'stage_platform': 'win64-st-an',
     'mozconfig_variant': 'clang',
     'artifact_flag_build_variant_in_try': None,
 }
--- a/testing/mozharness/configs/builds/taskcluster_sub_win64/clang_debug.py
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/clang_debug.py
@@ -1,10 +1,9 @@
 config = {
-    'perfherder_extra_options': ['static-analysis'],
     'stage_platform': 'win64-st-an-debug',
     'debug_build': True,
     'env': {
         'XPCOM_DEBUG_BREAK': 'stack-and-abort',
     },
     'mozconfig_variant': 'clang-debug',
     'artifact_flag_build_variant_in_try': None,
 }
--- a/testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py
+++ b/testing/mozharness/configs/builds/taskcluster_sub_win64/searchfox_debug.py
@@ -1,10 +1,9 @@
 config = {
-    'perfherder_extra_options': ['static-analysis'],
     'stage_platform': 'win64-st-an-debug',
     'debug_build': True,
     'env': {
         'XPCOM_DEBUG_BREAK': 'stack-and-abort',
         # Disable sccache because otherwise we won't index the files that
         # sccache optimizes away compilation for
         'SCCACHE_DISABLE': '1',
     },
--- a/testing/mozharness/mozharness/base/python.py
+++ b/testing/mozharness/mozharness/base/python.py
@@ -445,19 +445,16 @@ class PerfherderResourceOptionsMixin(Scr
                 self.info('instance_metadata.json not found; unable to '
                           'determine instance type')
             except Exception:
                 self.warning('error reading instance_metadata: %s' %
                              traceback.format_exc())
 
             opts.append('buildbot-%s' % instance)
 
-        # Allow configs to specify their own values.
-        opts.extend(self.config.get('perfherder_extra_options', []))
-
         return opts
 
 
 class ResourceMonitoringMixin(PerfherderResourceOptionsMixin):
     """Provides resource monitoring capabilities to scripts.
 
     When this class is in the inheritance chain, resource usage stats of the
     executing script will be recorded.
--- a/testing/mozharness/mozharness/mozilla/building/buildbase.py
+++ b/testing/mozharness/mozharness/mozilla/building/buildbase.py
@@ -1731,21 +1731,16 @@ or run without that action (ie: --no-{ac
             })
 
         build_metrics = self._load_build_resources()
         if build_metrics:
             perfherder_data['suites'].append(build_metrics)
         perfherder_data['suites'].extend(self._load_sccache_stats())
 
         # Ensure all extra options for this configuration are present.
-        for opt in self.config.get('perfherder_extra_options', []):
-            for suite in perfherder_data['suites']:
-                if opt not in suite.get('extraOptions', []):
-                    suite.setdefault('extraOptions', []).append(opt)
-
         for opt in os.environ.get('PERFHERDER_EXTRA_OPTIONS', '').split():
             for suite in perfherder_data['suites']:
                 if opt not in suite.get('extraOptions', []):
                     suite.setdefault('extraOptions', []).append(opt)
 
         if self.query_is_nightly():
             for suite in perfherder_data['suites']:
                 suite.setdefault('extraOptions', []).insert(0, 'nightly')