Merge pull request #134 from signalwire/drone
Add unit-tests automation to Drone CI
This commit is contained in:
commit
ff65104c03
|
@ -0,0 +1,47 @@
|
||||||
|
---
|
||||||
|
kind: pipeline
|
||||||
|
name: unit-tests
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: run-tests
|
||||||
|
image: signalwire/freeswitch-public-base
|
||||||
|
pull: true
|
||||||
|
commands:
|
||||||
|
- ./bootstrap.sh -j
|
||||||
|
- echo "applications/mod_test" >> modules.conf
|
||||||
|
- ./configure
|
||||||
|
- echo "#!/bin/bash\nmake -j`nproc --all` |& tee ./unit-tests-build-result.txt\nexitstatus=\${PIPESTATUS[0]}\necho \$exitstatus > ./build-status.txt\nmake install\n" > build.sh
|
||||||
|
- chmod +x build.sh
|
||||||
|
- ./build.sh
|
||||||
|
- cd tests/unit
|
||||||
|
- ./run-tests.sh
|
||||||
|
- mkdir logs && (mv log_run-tests_*.html logs || true)
|
||||||
|
- echo 0 > run-tests-status.txt
|
||||||
|
- ./collect-test-logs.sh && exit 0 || echo 'Some tests failed'
|
||||||
|
- echo 1 > run-tests-status.txt
|
||||||
|
- cd logs && ls -la
|
||||||
|
|
||||||
|
- name: notify
|
||||||
|
image: signalwire/unit-tests-notify
|
||||||
|
pull: true
|
||||||
|
environment:
|
||||||
|
GITHUB_CI_APP_PEM:
|
||||||
|
from_secret: github_ci_app_pem
|
||||||
|
SSH_KEY:
|
||||||
|
from_secret: ssh_key
|
||||||
|
SLACK_WEBHOOK_URL:
|
||||||
|
from_secret: slack_webhook_url
|
||||||
|
commands:
|
||||||
|
- /root/notify.sh
|
||||||
|
|
||||||
|
trigger:
|
||||||
|
branch:
|
||||||
|
- master
|
||||||
|
event:
|
||||||
|
- pull_request
|
||||||
|
- push
|
||||||
|
---
|
||||||
|
kind: signature
|
||||||
|
hmac: a34718dd1e2b9468a845962219ff05cac0c922ddf90d885af557a937a9e412e0
|
||||||
|
|
||||||
|
...
|
|
@ -0,0 +1,23 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
echo "Collecting test logs"
|
||||||
|
LOG_DIR=./logs
|
||||||
|
html="<html><h3>There are failed unit-tests:</h3><table>"
|
||||||
|
html+="<tr align=\"left\"><th><br>Unit tests</th></tr>"
|
||||||
|
logs=$(find $LOG_DIR -type f -iname "*.html" -print)
|
||||||
|
logs_found=0
|
||||||
|
for name in $logs
|
||||||
|
do
|
||||||
|
logname=$(basename $name)
|
||||||
|
testname=$(echo $logname | awk -F 'log_run-tests_' '{print $2}' | awk -F '.html' '{print $1}')
|
||||||
|
html+="<tr align=\"left\"><td><a href="$logname">$testname</a></td></tr>"
|
||||||
|
logs_found=1
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ $logs_found -ne 0 ]; then
|
||||||
|
html+="</table></html>"
|
||||||
|
echo $html > $LOG_DIR/artifacts.html
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
exit 0
|
|
@ -0,0 +1,27 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
TESTS=$(make -f - 2>/dev/null <<EOF
|
||||||
|
include Makefile
|
||||||
|
all:
|
||||||
|
@echo \$(TESTS)
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
echo "-----------------------------------------------------------------";
|
||||||
|
echo "Starting tests";
|
||||||
|
echo "Tests found: ${TESTS}";
|
||||||
|
echo "-----------------------------------------------------------------";
|
||||||
|
for i in $TESTS
|
||||||
|
do
|
||||||
|
echo "Testing $i" ;
|
||||||
|
logfilename="log_run-tests_$i.html";
|
||||||
|
./$i | tee >(ansi2html > $logfilename) ;
|
||||||
|
exitstatus=${PIPESTATUS[0]} ;
|
||||||
|
if [ "0" -eq $exitstatus ] ; then
|
||||||
|
rm $logfilename ;
|
||||||
|
else
|
||||||
|
echo "*** ./$i exit status is $exitstatus" ;
|
||||||
|
echo "*** $logfilename was saved" ;
|
||||||
|
fi ;
|
||||||
|
echo "----------------" ;
|
||||||
|
done
|
Loading…
Reference in New Issue