forked from angular/components
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart-tunnel.sh
More file actions
executable file
·69 lines (48 loc) · 2.13 KB
/
Copy pathstart-tunnel.sh
File metadata and controls
executable file
·69 lines (48 loc) · 2.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#!/bin/bash
set -e -o pipefail
# Workaround for Travis CI cookbook https://github.com/travis-ci/travis-ci/issues/4862,
# where $PATH will be extended with relative paths to the NPM binaries.
PATH=`echo ${PATH} | sed -e 's/:\.\/node_modules\/\.bin//'`
TUNNEL_FILE="BrowserStackLocal-linux-x64.zip"
TUNNEL_URL="https://www.browserstack.com/browserstack-local/${TUNNEL_FILE}"
TUNNEL_DIR="/tmp/browserstack-tunnel"
TUNNEL_LOG="${LOGS_DIR}/browserstack-tunnel.log"
BROWSER_STACK_ACCESS_KEY=`echo ${BROWSER_STACK_ACCESS_KEY} | rev`
# Cleanup and create the folder structure for the tunnel connector.
rm -rf ${TUNNEL_DIR} ${BROWSER_PROVIDER_READY_FILE}
mkdir -p ${TUNNEL_DIR}
touch ${TUNNEL_LOG}
cd ${TUNNEL_DIR}
# Download the browserstack local binaries.
curl ${TUNNEL_URL} -o ${TUNNEL_FILE} 2> /dev/null 1> /dev/null
# Extract the browserstack local binaries from the tarball.
mkdir -p browserstack-tunnel
unzip -q ${TUNNEL_FILE} -d browserstack-tunnel
# Cleanup the download directory.
rm ${TUNNEL_FILE}
ARGS=""
# Set tunnel-id only on Travis, to make local testing easier.
if [ ! -z "${TRAVIS_JOB_ID}" ]; then
ARGS="${ARGS} --local-identifier ${TRAVIS_JOB_ID}"
fi
echo "Starting Browserstack Local in the background, logging into: ${TUNNEL_LOG}"
# Extension to the BrowserStackLocal binaries, because those can't create a readyfile.
function create_ready_file {
# To be able to exit the tail properly we need to have a sub shell spawned, which is
# used to track the state of tail.
{ sleep 120; touch ${BROWSER_PROVIDER_ERROR_FILE}; } &
TIMER_PID=${!}
# Disown the background process, because we don't want to show any messages when killing
# the timer.
disown
# When the tail recognizes the `Ctrl-C` log message the BrowserStack Tunnel is up.
{
tail -n0 -f ${TUNNEL_LOG} --pid ${TIMER_PID} | { sed '/Ctrl/q' && kill -9 ${TIMER_PID}; };
} &> /dev/null
echo
echo "BrowserStack Tunnel ready"
touch ${BROWSER_PROVIDER_READY_FILE}
}
browserstack-tunnel/BrowserStackLocal -k ${BROWSER_STACK_ACCESS_KEY} ${ARGS} 2>&1 >> ${TUNNEL_LOG} &
# Wait for the tunnel to be ready and create the readyfile with the Browserstack PID
create_ready_file &