Merge "Update spectrometer webapp deploy job"
[releng/builder.git] / jjb / spectrometer / spectrometer-jobs.yaml
index b88a2564360aa5571f5e60f2f57c940ce56ad90a..17952afcac89ebb31143041970eafa20f97c1262 100644 (file)
@@ -1,52 +1,98 @@
 - project:
     name: spectrometer
     jobs:
-        - 'spectrometer-merge-{stream}'
-        - '{name}-verify-python-{stream}'
+        - '{project-name}-merge-rtd-{stream}'
+        - '{project-name}-verify-node-{stream}'
+        - '{project-name}-verify-python-{stream}'
+        - 'spectrometer-deploy-webapp-master'
 
     stream:
         - master:
             branch: 'master'
 
     project: 'spectrometer'
+    project-name: 'spectrometer'
+    rtdproject: 'opendaylight-spectrometer'
     toxdir: server
+    nodedir: web
+    nodever: 6.9.4
+    staging-server: spectrometer03.dfw.opendaylight.org
 
 - job-template:
-    name: 'spectrometer-merge-{stream}'
+    name: 'spectrometer-deploy-webapp-master'
 
     project-type: freestyle
     node: dynamic_verify
-    concurrent: true
-
-    parameters:
-        - project-parameter:
-            project: '{project}'
-        - gerrit-parameter:
-            branch: '{branch}'
-        - gerrit-refspec-parameter:
-            refspec: 'refs/heads/{branch}'
-
-    scm:
-        - gerrit-trigger-scm:
-            credentials-id: '{ssh-credentials}'
-            refspec: '$GERRIT_REFSPEC'
-            choosing-strategy: 'gerrit'
+    concurrent: false
+
+    properties:
+        - opendaylight-infra-properties:
+            build-days-to-keep: '{build-days-to-keep}'
 
     wrappers:
         - build-timeout
         - ssh-agent-credentials:
             users:
-                - '{ssh-credentials}'
+                - 'spectrometer-deploy-key'
 
     triggers:
         - gerrit-trigger-patch-merged:
+            server-name: '{server-name}'
             name: 'spectrometer'
-            branch: '{branch}'
+            branch: 'master'
 
     builders:
         - shell: |
-            wget --post-data=test -qO- https://readthedocs.org/build/opendaylight-spectrometer &> /dev/null
+            echo "Deploying spectrometer"
+            ssh -oStrictHostKeyChecking=no spectrometer@{staging-server} 'bash -s' << EOF
+
+            if [ -e spectrometer ]; then
+                cd spectrometer
+                git pull
+                cd ..
+            else
+                git clone https://git.opendaylight.org/gerrit/spectrometer
+            fi
+
+            echo "---> Setup Python"
+            if [ -e venv-python34/bin/activate ]; then
+                echo "---> Updating Python dependencies"
+                source venv-python34/bin/activate
+            else
+                echo "---> virtualenv not found. Setting up new virtualenv."
+                pyvenv venv-python34 --without-pip
+                source venv-python34/bin/activate
+                wget https://bootstrap.pypa.io/get-pip.py
+                python get-pip.py
+                pip install -e spectrometer/server
+            fi
+            pip install --upgrade -r spectrometer/server/requirements.txt
+            pip install --upgrade gunicorn gevent
+            pip install --upgrade nodeenv
+            pip freeze
+
+            echo "---> Setup NodeJS"
+            if [ -e venv-nodejs/bin/activate ]; then
+                echo "---> Updating NodeJS dependencies"
+            else
+                echo "---> nodeenv not found. Setting up new nodeenv"
+                nodeenv --node={nodever} --prebuilt venv-nodejs
+            fi
+            source venv-nodejs/bin/activate
+            node -v
+            npm -v
+
+            echo "---> Restart spectrometer-api"
+            pkill gunicorn
+            sleep 5  # Sleep 5 seconds for cooldown
+            nohup gunicorn -b 0.0.0.0:5000 'spectrometer:run_app()' --timeout 600 -k gevent >> ~/gunicorn.out &
+            sleep 120  # Sleep 2 minutes to allow Spectrometer to initialize
+
+            echo "---> Restart spectrometer-web"
+            pkill node
+            sleep 5  # Sleep 5 seconds for cooldown
+            cd spectrometer/web
+            npm install
+            nohup npm start >> ~/node.out &
 
-    publishers:
-        - email-notification:
-            email-prefix: '[spectrometer]'
+            EOF