6894c7a53a71a1feb4b79fbc5b12822fa843f9ba
[releng/builder.git] / jjb / spectrometer / spectrometer-jobs.yaml
1 - project:
2     name: spectrometer
3     jobs:
4         - '{project-name}-merge-rtd-{stream}'
5         - '{project-name}-verify-node-{stream}'
6         - '{project-name}-verify-python-{stream}'
7         - 'spectrometer-deploy-webapp-master'
8
9     stream:
10         - master:
11             branch: 'master'
12
13     project: 'spectrometer'
14     project-name: 'spectrometer'
15     rtdproject: 'opendaylight-spectrometer'
16     toxdir: server
17     nodedir: web
18     nodever: 4.4.6
19     staging-server: spectrometer03.dfw.opendaylight.org
20
21 - job-template:
22     name: 'spectrometer-deploy-webapp-master'
23
24     project-type: freestyle
25     node: dynamic_verify
26     concurrent: false
27
28     logrotate:
29         daysToKeep: '{build-days-to-keep}'
30         numToKeep: '{build-num-to-keep}'
31
32     wrappers:
33         - build-timeout
34         - ssh-agent-credentials:
35             users:
36                 - 'spectrometer-deploy-key'
37
38     triggers:
39         - gerrit-trigger-patch-merged:
40             name: 'spectrometer'
41             branch: 'master'
42
43     builders:
44         - shell: |
45             echo "Deploying spectrometer"
46             ssh -oStrictHostKeyChecking=no spectrometer@{staging-server} 'bash -s' << EOF
47
48             if [ -e spectrometer ]; then
49                 cd spectrometer
50                 git pull
51                 cd ..
52             else
53                 git clone https://git.opendaylight.org/gerrit/spectrometer
54             fi
55
56             echo "---> Setup Python"
57             if [ -e venv-python34/bin/activate ]; then
58                 echo "---> Updating Python dependencies"
59             else
60                 echo "---> virtualenv not found. Setting up new virtualenv."
61                 pyvenv venv-python34
62                 pip install -e spectrometer/server
63             fi
64             source venv-python34/bin/activate
65             pip install --upgrade -r spectrometer/server/requirements.txt
66             pip install --upgrade nodeenv
67             pip freeze
68
69             echo "---> Setup NodeJS"
70             if [ -e venv-nodejs/bin/activate ]; then
71                 echo "---> Updating NodeJS dependencies"
72             else
73                 echo "---> nodeenv not found. Setting up new nodeenv"
74                 nodeenv --node={nodever} --prebuilt venv-nodejs
75             fi
76             source venv-nodejs/bin/activate
77             npm install -g spectrometer/web
78             node -v
79             npm -v
80
81             echo "---> Ensure mongo is running"
82             ps -A | grep -q '[m]ongod'
83             if [ ! "$?" -eq "0" ]; then
84                 echo "The mongod server DOWN", restarting...
85                 if [ ! -d mongo ]; then
86                     mkdir mongo
87                 fi
88                 echo "---> Starting mongo"
89                 mongod --dbpath ~/mongo &
90             fi
91
92             echo "---> Restart spectrometer-api"
93             pkill gunicorn
94             sleep 5  # Sleep 5 seconds for cooldown
95             nohup gunicorn -b 0.0.0.0:5000 'spectrometer:run_app()' --timeout 600 -k gevent >> ~/gunicorn.out &
96
97             echo "---> Restart spectrometer-web"
98             pkill node
99             sleep 5  # Sleep 5 seconds for cooldown
100             cd spectrometer/web
101             nohup npm start >> ~/node.out &
102
103             EOF