Merge pull request #134 from signalwire/drone

Add unit-tests automation to Drone CI
This commit is contained in:
Andrey Volk 2019-11-25 23:54:14 +04:00 committed by GitHub
commit ff65104c03
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 97 additions and 0 deletions

47
.drone.yml Normal file
View File

@ -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
...

23
tests/unit/collect-test-logs.sh Executable file
View File

@ -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

27
tests/unit/run-tests.sh Executable file
View File

@ -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