-
Notifications
You must be signed in to change notification settings - Fork 92
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
song
committed
Jul 22, 2017
1 parent
bf43aeb
commit a6c2d59
Showing
3 changed files
with
286 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
[Unit] | ||
Description=Android Debug Bridge daemon | ||
|
||
[Service] | ||
#TimeoutStartSec=1min | ||
Restart=always | ||
RestartSec=2s | ||
Type=forking | ||
User=root | ||
ExecStartPre=/usr/bin/adb kill-server | ||
ExecStart=/usr/bin/adb start-server | ||
ExecStop=/usr/bin/adb kill-server | ||
|
||
[Install] | ||
WantedBy=multi-user.target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
#!/usr/bin/env bash | ||
####################################################################################### | ||
# file: deploy_stf.sh | ||
# brief: deploy components of stf with docker | ||
# creator: thinkhy | ||
# date: 2017-04-20 | ||
# usage: ./deploy_stf.sh Note: run it as ROOT user | ||
# changes: | ||
# 1. 2017-04-20 init @thinkhy | ||
# 2. 2017-04-26 add systemd unit @thinkhy | ||
# 3. 2017-05-04 install adb on host machine @thinkhy | ||
# 4. 2017-07-22 generate and customize nginx.conf | ||
# | ||
####################################################################################### | ||
|
||
# Get exported IP Adreess | ||
[ ! -z "$(echo ${NETWORK_INTERFACES} | grep "wlo1")" ]&&NETNAME="wlo1" | ||
[ ! -z "$(echo ${NETWORK_INTERFACES} | grep "eno1")" ]&&NETNAME="eno1" | ||
IP_ADDRESS=$(ifconfig ${NETNAME}|grep "inet "|awk -F: '{print $2}'|awk '{print $1}') | ||
[ $# -gt 0 ]&&IP_ADDRESS=$1 | ||
|
||
|
||
check_return_code() { | ||
if [ $? -ne 0 ]; then | ||
echo "Failed to run last step!" | ||
return 1 | ||
fi | ||
|
||
return 0 | ||
} | ||
|
||
assert_run_ok() { | ||
if [ $? -ne 0 ]; then | ||
echo "Failed to run last step!" | ||
exit 1 | ||
fi | ||
|
||
return 0 | ||
} | ||
|
||
prepare() { | ||
echo "setup environment ..." | ||
|
||
# Given advantages of performance and stability, we run adb server and rethinkdb | ||
# on host(physical) machine rather than on docker containers, so need to | ||
# install package of android-tools-adb first [ thinkhy 2017-05-04 ] | ||
|
||
# install adb | ||
apt-get install -y android-tools-adb | ||
|
||
apt-get install -y docker.io | ||
assert_run_ok | ||
|
||
docker pull openstf/stf | ||
assert_run_ok | ||
|
||
docker pull sorccu/adb | ||
assert_run_ok | ||
|
||
docker pull rethinkdb | ||
assert_run_ok | ||
|
||
docker pull openstf/ambassador | ||
assert_run_ok | ||
|
||
docker pull nginx | ||
assert_run_ok | ||
|
||
cp -rf adbd.service.template /etc/systemd/system/adbd.service | ||
assert_run_ok | ||
|
||
sed -e "s/__IP_ADDRESS__/${IP_ADDRESS}/g" \ | ||
nginx.conf.template |tee nginx.conf | ||
echo 1>"env.ok" | ||
|
||
} | ||
|
||
if [ ! -e env.ok ]; then | ||
prepare | ||
fi | ||
|
||
# start local adb server | ||
echo "start adb server" | ||
systemctl start adbd | ||
|
||
# start rethinkdb | ||
echo "start docker container: rethinkdb" | ||
docker run -d --name rethinkdb -v /srv/rethinkdb:/data --net host rethinkdb rethinkdb --bind all --cache-size 8192 --http-port 8090 | ||
check_return_code | ||
|
||
# start nginx, note: generate nginx.conf first | ||
echo "start docker container: nginx" | ||
docker run -d -v $(pwd)/nginx.conf:/etc/nginx/nginx.conf:ro --name nginx --net host nginx nginx | ||
check_return_code | ||
|
||
# create tables | ||
echo "start docker container: stf-migrate" | ||
docker run -d --name stf-migrate --net host openstf/stf stf migrate | ||
check_return_code | ||
|
||
# create storage components | ||
echo "start docker container: storage-plugin-apk-3300" | ||
docker run -d --name storage-plugin-apk-3300 -p 3300:3000 --dns __DNS_ADDRESS__ openstf/stf stf storage-plugin-apk --port 3000 --storage-url http://__IP_ADDRESS__/ | ||
check_return_code | ||
|
||
echo "start docker container: storage-plugin-image-3400" | ||
docker run -d --name storage-plugin-image-3400 -p 3400:3000 --dns __DNS_ADDRESS__ openstf/stf stf storage-plugin-image --port 3000 --storage-url http://__IP_ADDRESS__/ | ||
check_return_code | ||
|
||
echo "start docker container: storage-temp-3500" | ||
docker run -d --name storage-temp-3500 -v /mnt/storage:/data -p 3500:3000 --dns __DNS_ADDRESS__ openstf/stf stf storage-temp --port 3000 --save-dir /data | ||
check_return_code | ||
|
||
# tri-proxy | ||
echo "start docker container: triproxy-app" | ||
docker run -d --name triproxy-app --net host openstf/stf stf triproxy app --bind-pub "tcp://*:7150" --bind-dealer "tcp://*:7160" --bind-pull "tcp://*:7170" | ||
check_return_code | ||
|
||
echo "start docker container: triproxy-dev" | ||
docker run -d --name triproxy-dev --net host openstf/stf stf triproxy dev --bind-pub "tcp://*:7250" --bind-dealer "tcp://*:7260" --bind-pull "tcp://*:7270" | ||
check_return_code | ||
|
||
# auth | ||
echo "start docker container: stf-auth-3200" | ||
docker run -d --name stf-auth-3200 -e "SECRET=YOUR_SESSION_SECRET_HERE" -p 3200:3000 --dns __DNS_ADDRESS__ openstf/stf stf auth-mock --port 3000 --app-url http://__IP_ADDRESS__/ | ||
check_return_code | ||
|
||
# api | ||
echo "start docker container: stf-api" | ||
docker run -d --name stf-api --net host -e "SECRET=YOUR_SESSION_SECRET_HERE" openstf/stf stf api --port 3700 --connect-sub tcp://__IP_ADDRESS__:7150 --connect-push tcp://__IP_ADDRESS__:7170 | ||
check_return_code | ||
|
||
# stf APP | ||
echo "start docker container: stf-app-3100" | ||
docker run -d --name stf-app-3100 --net host -e "SECRET=YOUR_SESSION_SECRET_HERE" -p 3100:3000 openstf/stf stf app --port 3100 --auth-url http://__IP_ADDRESS__/auth/mock/ --websocket-url http://__IP_ADDRESS__/ | ||
check_return_code | ||
|
||
|
||
# processor | ||
echo "start docker container: stf-processor" | ||
docker run -d --name stf-processor --net host openstf/stf stf processor stf-processor.service --connect-app-dealer tcp://__IP_ADDRESS__:7160 --connect-dev-dealer tcp://__IP_ADDRESS__:7260 | ||
check_return_code | ||
|
||
# websocket | ||
echo "start docker container: websocket" | ||
docker run -d --name websocket -e "SECRET=YOUR_SESSION_SECRET_HERE" --net host openstf/stf stf websocket --port 3600 --storage-url http://__IP_ADDRESS__/ --connect-sub tcp://__IP_ADDRESS__:7150 --connect-push tcp://__IP_ADDRESS__:7170 | ||
check_return_code | ||
|
||
# reaper | ||
echo "start docker container: reaper" | ||
docker run -d --name reaper --net host openstf/stf stf reaper dev --connect-push tcp://__IP_ADDRESS__:7270 --connect-sub tcp://__IP_ADDRESS__:7150 --heartbeat-timeout 30000 | ||
check_return_code | ||
|
||
# provider | ||
echo "start docker container: provider-__HOSTNAME__" | ||
docker run -d --name provider1 --net host openstf/stf stf provider --name "provider-__HOSTNAME__" --connect-sub tcp://__IP_ADDRESS__:7250 --connect-push tcp://__IP_ADDRESS__:7270 --storage-url http://__IP_ADDRESS__ --public-ip __IP_ADDRESS__ --min-port=15000 --max-port=25000 --heartbeat-interval 20000 --screen-ws-url-pattern "ws://__IP_ADDRESS__/d/floor4/<%= serial %>/<%= publicPort %>/" | ||
check_return_code | ||
|
||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,112 @@ | ||
daemon off; | ||
worker_processes 4; | ||
|
||
events { | ||
worker_connections 1024; | ||
} | ||
|
||
http { | ||
upstream stf_app { | ||
server __IP_ADDRESS__:3100 max_fails=0; | ||
} | ||
|
||
upstream stf_auth { | ||
server __IP_ADDRESS__:3200 max_fails=0; | ||
} | ||
|
||
upstream stf_storage_apk { | ||
server __IP_ADDRESS__:3300 max_fails=0; | ||
} | ||
|
||
upstream stf_storage_image { | ||
server __IP_ADDRESS__:3400 max_fails=0; | ||
} | ||
|
||
upstream stf_storage { | ||
server __IP_ADDRESS__:3500 max_fails=0; | ||
} | ||
|
||
upstream stf_websocket { | ||
server __IP_ADDRESS__:3600 max_fails=0; | ||
} | ||
|
||
upstream stf_api { | ||
server __IP_ADDRESS__:3700 max_fails=0; | ||
} | ||
|
||
types { | ||
application/javascript js; | ||
image/gif gif; | ||
image/jpeg jpg; | ||
text/css css; | ||
text/html html; | ||
} | ||
|
||
map $http_upgrade $connection_upgrade { | ||
default upgrade; | ||
'' close; | ||
} | ||
|
||
server { | ||
listen 80; | ||
server_name stf.test; | ||
keepalive_timeout 70; | ||
root /dev/null; | ||
|
||
resolver 127.0.0.1 valid=300s; | ||
resolver_timeout 10s; | ||
|
||
# Handle [email protected] | ||
location ~ "^/d/floor4/([^/]+)/(?<port>[0-9]{5})/$" { | ||
proxy_pass http://__IP_ADDRESS__:$port/; | ||
proxy_http_version 1.1; | ||
proxy_set_header Upgrade $http_upgrade; | ||
proxy_set_header Connection $connection_upgrade; | ||
proxy_set_header X-Forwarded-For $remote_addr; | ||
proxy_set_header X-Real-IP $remote_addr; | ||
} | ||
|
||
location /auth/ { | ||
proxy_pass http://stf_auth/auth/; | ||
} | ||
|
||
location /s/image/ { | ||
proxy_pass http://stf_storage_image; | ||
} | ||
|
||
location /s/apk/ { | ||
proxy_pass http://stf_storage_apk; | ||
} | ||
|
||
location /s/ { | ||
client_max_body_size 10240m; | ||
client_body_buffer_size 128k; | ||
proxy_pass http://stf_storage; | ||
} | ||
|
||
location /socket.io/ { | ||
proxy_pass http://stf_websocket; | ||
proxy_http_version 1.1; | ||
proxy_set_header Upgrade $http_upgrade; | ||
proxy_set_header Connection $connection_upgrade; | ||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
proxy_set_header X-Real-IP $http_x_real_ip; | ||
} | ||
|
||
location /gripper/ { | ||
proxy_pass http://stf_gripper/gripper/; | ||
} | ||
|
||
location /api/ { | ||
proxy_pass http://stf_api/api/; | ||
} | ||
|
||
|
||
location / { | ||
proxy_pass http://stf_app; | ||
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; | ||
proxy_set_header X-Real-IP $http_x_real_ip; | ||
} | ||
} | ||
} | ||
|