From f019fc46dc1b0378f8e7f9b11acd9625752f87d1 Mon Sep 17 00:00:00 2001
From: Michael Krotscheck <krotscheck@gmail.com>
Date: Thu, 10 Jul 2014 12:45:16 -0700
Subject: [PATCH] Added NodeJS and NPM to javascript build

It turns out that trusty has a recent-enough version of node
and NPM to allow us to remove the nodeenv dependency in
our javascript builds. This is the first step in doing this, to
get the core javascript build tools onto our jenkins nodes.

Note that a symlink for node is also created, because debian
has a different module called "node" for which there's a
namespace conflict. Since it's isolated to the npm-install
macro and we're unlikley to ever do Amateur Radio things
on infra, I don't expect this to be a problem.

Change-Id: I5349ad2013185fa20e784e3aa3691c7d41c43636
---
 .../files/jenkins_job_builder/config/javascript.yaml        | 2 ++
 .../files/jenkins_job_builder/config/macros.yaml            | 6 ++++++
 .../files/jenkins_job_builder/config/projects.yaml          | 4 ++--
 modules/openstack_project/files/zuul/layout.yaml            | 2 ++
 4 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/modules/openstack_project/files/jenkins_job_builder/config/javascript.yaml b/modules/openstack_project/files/jenkins_job_builder/config/javascript.yaml
index 1cba700282..849a5c388a 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/javascript.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/javascript.yaml
@@ -7,6 +7,7 @@
       - timestamps
 
     builders:
+      - npm-install
       - revoke-sudo
       - gerrit-git-prep
       - js-build:
@@ -39,6 +40,7 @@
     name: '{name}-js-release-{branch-designator}'
 
     builders:
+      - npm-install
       - revoke-sudo
       - gerrit-git-prep
       - js-build:
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml b/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml
index 2a3302cb22..615853834f 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/macros.yaml
@@ -74,6 +74,12 @@
     builders:
       - shell: "/usr/local/jenkins/slave_scripts/run-pylint.sh {github-org} {project}"
 
+- builder:
+    name: npm-install
+    builders:
+      - shell: "sudo apt-get install nodejs npm"
+      - shell: "sudo ln /usr/bin/nodejs /usr/local/bin/node"
+
 - builder:
     name: puppet-lint
     builders:
diff --git a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
index 747cd2c6f8..bad11e5b5f 100644
--- a/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
+++ b/modules/openstack_project/files/jenkins_job_builder/config/projects.yaml
@@ -1422,7 +1422,7 @@
 - project:
     name: storyboard-webclient
     github-org: openstack-infra
-    node: 'bare-precise || bare-trusty'
+    node: 'bare-trusty'
     tarball-site: tarballs.openstack.org
 
     jobs:
@@ -1445,7 +1445,7 @@
 - project:
     name: vinz-webclient
     github-org: openstack-infra
-    node: 'bare-precise || bare-trusty'
+    node: 'bare-trusty'
     tarball-site: tarballs.openstack.org
 
     jobs:
diff --git a/modules/openstack_project/files/zuul/layout.yaml b/modules/openstack_project/files/zuul/layout.yaml
index 487f0f5bd6..bd86f40610 100644
--- a/modules/openstack_project/files/zuul/layout.yaml
+++ b/modules/openstack_project/files/zuul/layout.yaml
@@ -541,8 +541,10 @@ jobs:
   - name: ^gate-.*-docs$
     success-pattern: http://docs-draft.openstack.org/{build.parameters[LOG_PATH]}/doc/build/html/
   - name: gate-storyboard-webclient-js-unittests
+    parameter-function: set_node_options_default_trusty
     success-pattern: http://docs-draft.openstack.org/{build.parameters[LOG_PATH]}/dist/
   - name: gate-vinz-webclient-js-unittests
+    parameter-function: set_node_options_default_trusty
     success-pattern: http://docs-draft.openstack.org/{build.parameters[LOG_PATH]}/dist/
   - name: infra-publications-publish
     branch: ^(?!master).*$