Bug 1286075: add a static-analysis kind; r=Ehsan draft
authorDustin J. Mitchell <dustin@mozilla.com>
Thu, 08 Sep 2016 00:31:35 +0000
changeset 412751 d1e1086e24f8e772689089626a3bb47e04164fe4
parent 412750 8ad5e1a0866f64755e985d5ec61b379efa54b54d
child 412752 caaf989297c35888ed3cf8f1156b53649c417d02
push id29252
push userdmitchell@mozilla.com
push dateMon, 12 Sep 2016 19:16:39 +0000
reviewersEhsan
bugs1286075
milestone51.0a1
Bug 1286075: add a static-analysis kind; r=Ehsan MozReview-Commit-ID: G8muXBcNd5L
taskcluster/ci/static-analysis/kind.yml
taskcluster/docs/kinds.rst
taskcluster/taskgraph/try_option_syntax.py
new file mode 100644
--- /dev/null
+++ b/taskcluster/ci/static-analysis/kind.yml
@@ -0,0 +1,63 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+implementation: taskgraph.task.transform:TransformTask
+
+transforms:
+   - taskgraph.transforms.build_attrs:transforms
+   - taskgraph.transforms.job:transforms
+   - taskgraph.transforms.task:transforms
+
+job-defaults:
+    index:
+        product: firefox
+    treeherder:
+        symbol: S
+        kind: build
+        tier: 1
+    worker:
+        implementation: docker-worker
+        docker-image: {in-tree: desktop-build}
+        max-run-time: 36000
+
+jobs:
+    macosx64-st-an/opt:
+        description: "MacOS X x64 Cross-compile Static Analysis"
+        index:
+            job-name: macosx64-st-an-opt
+        treeherder:
+            platform: osx-10-7/opt
+        worker-type: aws-provisioner-v1/opt-macosx64
+        run:
+            using: mozharness
+            actions: [get-secrets build generate-build-stats update]
+            config:
+                - builds/releng_base_mac_64_cross_builds.py
+                - balrog/production.py
+            # Note that, despite the name "cross-opt", this config variant
+            # enables static analysis.
+            custom-build-variant-cfg: cross-opt
+            script: "mozharness/scripts/fx_desktop_build.py"
+            secrets: true
+            tooltool-downloads: internal
+            keep-artifacts: false
+
+    linux64-st-an/opt:
+        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
+        run:
+            using: mozharness
+            actions: [get-secrets build generate-build-stats]
+            config:
+                - builds/releng_sub_linux_configs/64_stat_and_opt.py
+                - balrog/production.py
+            script: "mozharness/scripts/fx_desktop_build.py"
+            secrets: true
+            tooltool-downloads: public
+            need-xvfb: true
+            keep-artifacts: false
--- a/taskcluster/docs/kinds.rst
+++ b/taskcluster/docs/kinds.rst
@@ -44,16 +44,24 @@ upload-symbols
 Upload-symbols tasks run after builds and upload the symbols files generated by
 build tasks to Socorro for later use in crash analysis.
 
 valgrind
 --------
 
 Valgrind tasks produce builds instrumented by valgrind.
 
+static-analysis
+---------------
+
+Static analysis builds use the compiler to perform some detailed analysis of
+the source code while building.  The useful output from these tasks are their
+build logs, and while they produce a binary, they do not upload it as an
+artifact.
+
 Tests
 -----
 
 Test tasks for Gecko products are divided into several kinds, but share a
 common implementation.  The process goes like this, based on a set of YAML
 files named in ``kind.yml``:
 
  * For each build task, determine the related test platforms based on the build
--- a/taskcluster/taskgraph/try_option_syntax.py
+++ b/taskcluster/taskgraph/try_option_syntax.py
@@ -24,16 +24,17 @@ BUILD_TYPE_ALIASES = {
 # consider anything in this whitelist of kinds to be governed by -b/-p
 BUILD_KINDS = set([
     'build',
     'artifact-build',
     'hazard',
     'l10n',
     'upload-symbols',
     'valgrind',
+    'static-analysis',
 ])
 
 # anything in this list is governed by -j
 JOB_KINDS = set([
     'source-check',
 ])