Add spectrometer-deployment job 39/40839/4
authorThanh Ha <thanh.ha@linuxfoundation.org>
Sat, 25 Jun 2016 17:31:33 +0000 (13:31 -0400)
committerThanh Ha <thanh.ha@linuxfoundation.org>
Wed, 10 Aug 2016 13:55:45 +0000 (09:55 -0400)
Automate deployment of spectrometer components to
spectrometer.opendaylight.org.

Change-Id: Ic0e3fc3e9a2864b41812ea836b8038df77ffa66f
Signed-off-by: Thanh Ha <thanh.ha@linuxfoundation.org>
jjb/spectrometer/spectrometer-jobs.yaml

index 25ab3402eec8fd04b14fbb28019fa0bedeecb9af..6894c7a53a71a1feb4b79fbc5b12822fa843f9ba 100644 (file)
@@ -4,6 +4,7 @@
         - '{project-name}-merge-rtd-{stream}'
         - '{project-name}-verify-node-{stream}'
         - '{project-name}-verify-python-{stream}'
+        - 'spectrometer-deploy-webapp-master'
 
     stream:
         - master:
     rtdproject: 'opendaylight-spectrometer'
     toxdir: server
     nodedir: web
-    nodever: 4.4.5
+    nodever: 4.4.6
+    staging-server: spectrometer03.dfw.opendaylight.org
+
+- job-template:
+    name: 'spectrometer-deploy-webapp-master'
+
+    project-type: freestyle
+    node: dynamic_verify
+    concurrent: false
+
+    logrotate:
+        daysToKeep: '{build-days-to-keep}'
+        numToKeep: '{build-num-to-keep}'
+
+    wrappers:
+        - build-timeout
+        - ssh-agent-credentials:
+            users:
+                - 'spectrometer-deploy-key'
+
+    triggers:
+        - gerrit-trigger-patch-merged:
+            name: 'spectrometer'
+            branch: 'master'
+
+    builders:
+        - shell: |
+            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"
+            else
+                echo "---> virtualenv not found. Setting up new virtualenv."
+                pyvenv venv-python34
+                pip install -e spectrometer/server
+            fi
+            source venv-python34/bin/activate
+            pip install --upgrade -r spectrometer/server/requirements.txt
+            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
+            npm install -g spectrometer/web
+            node -v
+            npm -v
+
+            echo "---> Ensure mongo is running"
+            ps -A | grep -q '[m]ongod'
+            if [ ! "$?" -eq "0" ]; then
+                echo "The mongod server DOWN", restarting...
+                if [ ! -d mongo ]; then
+                    mkdir mongo
+                fi
+                echo "---> Starting mongo"
+                mongod --dbpath ~/mongo &
+            fi
+
+            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 &
+
+            echo "---> Restart spectrometer-web"
+            pkill node
+            sleep 5  # Sleep 5 seconds for cooldown
+            cd spectrometer/web
+            nohup npm start >> ~/node.out &
+
+            EOF