Merge "Add quick verify job for RPM building logic"
[releng/builder.git] / jjb / spectrometer / spectrometer-jobs.yaml
index 25ab3402eec8fd04b14fbb28019fa0bedeecb9af..5c3f1a7068cda6087cca255ee795940aee699598 100644 (file)
+---
 - project:
     name: spectrometer
     jobs:
-        - '{project-name}-merge-rtd-{stream}'
-        - '{project-name}-verify-node-{stream}'
-        - '{project-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'
+      - master:
+          branch: 'master'
 
     project: 'spectrometer'
     project-name: 'spectrometer'
     rtdproject: 'opendaylight-spectrometer'
     toxdir: server
     nodedir: web
-    nodever: 4.4.5
+    nodever: 6.9.4
+    staging-server: spectrometer03.dfw.opendaylight.org
+
+- job-template:
+    name: 'spectrometer-deploy-webapp-master'
+
+    project-type: freestyle
+    node: centos7-java-builder-2c-4g
+    concurrent: false
+
+    properties:
+      - opendaylight-infra-properties:
+          build-days-to-keep: '{build-days-to-keep}'
+
+    wrappers:
+      - build-timeout
+      - ssh-agent-credentials:
+          users:
+            - 'spectrometer-deploy-key'
+
+    triggers:
+      - gerrit-trigger-patch-merged:
+          server-name: '{server-name}'
+          name: 'spectrometer'
+          branch: 'master'
+      - timed: '@daily'
+
+    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"
+              source venv-python34/bin/activate
+              PYTHON="venv-python34/bin/python"
+          else
+              echo "---> virtualenv not found. Setting up new virtualenv."
+              pyvenv venv-python34 --without-pip
+              source venv-python34/bin/activate
+              PYTHON="venv-python34/bin/python"
+              wget https://bootstrap.pypa.io/get-pip.py
+              python get-pip.py
+              $PYTHON -m pip install -e spectrometer/server
+          fi
+          $PYTHON -m pip install --upgrade -r spectrometer/server/requirements.txt
+          $PYTHON -m pip install --upgrade gunicorn gevent
+          $PYTHON -m pip install --upgrade nodeenv
+          $PYTHON -m pip install --upgrade pipdeptree
+          pipdeptree
+
+          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
+          spectrometer server sync
+          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 &
+
+          EOF