/
run.sh
executable file
·77 lines (68 loc) · 1.71 KB
/
run.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#!/bin/bash
USAGE_LINE="Usage: `basename $0` task [subtask]"
VERSION=pre-alpha
if [ ! "$1" ]; then
echo $USAGE_LINE
exit 1
elif [ "$1" = "-h" -o "$1" = "--help" ]; then
echo "TBCIS - Tiny Bash Continuous Integration System"
echo "Version: $VERSION"
echo
echo $USAGE_LINE
exit 0
elif [ "$1" = "-v" -o "$1" = "--version" ]; then
echo $VERSION
exit 0
fi
TASK="$1"
shift
SUBTASKS="$@"
if [ ! "$SUBTASKS" -o "$SUBTASKS" = "run" ]; then
SUBTASKS="changes config build package test"
fi
source config.sh
source common.sh
# Check the task exists
if [ ! -e "$TBCIS_TASKS_ROOT/$TASK" ]; then
echo "Cannot find task $TASK"
exit 1
fi
# Create a directory for result files
TBCIS_RESULT_DIR="$TBCIS_RESULTS_ROOT/$TASK/$TBCIS_RESULT_ID"
mkdir -p "$TBCIS_RESULT_DIR"
TBCIS_OUT_DIR="$TBCIS_RESULT_DIR/out"
mkdir -p "$TBCIS_OUT_DIR"
# Function for handling phase result
finish_task()
{
if [ $? -ne 0 ]; then
status ERR
exit 0
fi
local status=`cat $TBCIS_RESULT_DIR/$TBCIS_PHASE.status || echo N/A`
if [ $status = "RUNNING" ]; then
status OK
elif [ $status = "N/A" ]; then
rm $TBCIS_RESULT_DIR/$TBCIS_PHASE.status
rm $TBCIS_RESULT_DIR/$TBCIS_PHASE.log
elif [ $status = "NOCHG" ]; then
exit 0
elif [ $status = "NOK" ]; then
exit 0
fi
}
# Run phases
for TBCIS_PHASE in $SUBTASKS; do
logfile="$TBCIS_RESULT_DIR/$TBCIS_PHASE.log"
echo "Starting phase '$TBCIS_PHASE' on `date -R`" > "$logfile"
echo "" >> "$logfile"
status RUNNING
export TBCIS_PHASE
export TBCIS_RESULT_DIR
export TBCIS_OUT_DIR
export LC_ALL="en_US.UTF-8"
echo "source common.sh; source $TBCIS_TASKS_ROOT/$TASK; do_${TBCIS_PHASE}" | bash >> "$logfile" 2>&1
echo "" >> "$logfile"
echo "Ending phase '$TBCIS_PHASE' on `date -R`" >> "$logfile"
finish_task
done