-
Notifications
You must be signed in to change notification settings - Fork 4
/
silent_compose.sh
49 lines (42 loc) · 1.36 KB
/
silent_compose.sh
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
#!/bin/bash
# Runs docker-compose in the detached mode silently and then displays logs for the failed
# services as well as ones, that could not finish communication in the timeout time
taillen=500
failed=0
if [ "$1" = "debug" ]; then
docker-compose up # | tee >(grep "exited with code [1-9]") && exit 1 || exit 0
else
docker-compose up -d || exit 1
services=($(docker-compose ps | awk '{print $1}'| tail -n +3))
# maximum test timeout is 10 minutes
for i in {1..10}; do
for service in ${services[@]}; do
# check if the service is still running
if [ -z "$(docker ps | grep $service | cut -d ' ' -f 1)" ]; then
if [ "$(docker inspect $service --format='{{.State.ExitCode}}')" -eq 1 ]; then
echo "$service failed! Find the logs below"
failed=1
docker-compose logs --tail=$taillen $service
fi
# pop
services=(${services[@]/$service})
fi
done
# exit if nothing is running
if [ ${#services[@]} -eq 0 ]; then
echo "All adapters finished!"
exit $failed
fi
echo "Running the simulation...Be patient"
sleep 60
done
echo "Timeout!"
echo "Printing logs for services:"
# probably failed due to communication issues,
# list individual logs and exit
for service in ${services[@]}; do
docker-compose logs --tail=$taillen $service
docker-compose stop $service
done
exit 1
fi