[ci] Add framework for Travis integration

ico
Ilya Dmitrichenko 2012-11-12 22:26:17 +00:00
parent 8eeae7689e
commit d299c8217c
2 changed files with 65 additions and 0 deletions

45
.travis.mk Normal file
View File

@ -0,0 +1,45 @@
## Makefile.CI
#
# This is for use on [Travis CI](http://travis-ci.org), which is
# a free distributed continuous integration service with unique
# set of features:
# * uses clean ephemeral virtual machines for every build
# * integrates with GitHub - triggers builds on push and pull-request
# * it is open source and free for public repositories
# * features great web UI and bunch of other stuff
JOBS ?= 2
TAIL ?= tail -n 15
EXAMPLES_ALL = hello-world
EXAMPLES_native = ipv6/native-border-router
CT := \033[0;0m
ifdef BOXED_SIGNS
SKIP_SIGN :=
FAIL_SIGN :=
PASS_SIGN :=
else
SKIP_SIGN :=
FAIL_SIGN :=
PASS_SIGN :=
endif
SKIP = (echo "\033[1;36m $(SKIP_SIGN) $$e ⊈ $@ $(CT)"; echo skip >> results)
FAIL = (echo "\033[1;35m $(FAIL_SIGN) $$e ∉ $@ $(CT)"; $(TAIL) $(LOG); echo fail >> results)
PASS = (echo "\033[1;32m $(PASS_SIGN) $$e ∈ $@ $(CT)"; echo pass >> results)
ifeq ($(BUILD_TYPE),multi)
THIS = $(MAKE) -C examples/$$e TARGET=$@ > $(LOG) 2>&1
MINE = $(EXAMPLES_ALL) $(EXAMPLES_$(subst -,_,$@))
endif
LOG = /tmp/$@_`echo $$e | sed 's:/:_:g'`.log
%:
@echo "\033[1;37m ➠ $@ $(CT)"
@for e in $(MINE); do $(THIS) && $(PASS) || $(FAIL); done;

20
.travis.yml Normal file
View File

@ -0,0 +1,20 @@
language: c #NOTE: this will set CC=gcc which might cause trouble
before_script:
## Install mainline msp430 toolchain for all build types
- "sudo apt-get -qq update && sudo apt-get -qq install gcc-msp430 || true"
script:
## The makefile called `.travis.mk` handles most of generic logic
- "make -f .travis.mk $MAKE_TARGETS"
after_script:
## Print a basic summary in unix style
- "echo 'Summary:'; cat results | sort | uniq -c"
## This will detect whether the build should pass or fail
- "grep -v -q 'fail' results"
env:
## This magically kick-off parallel jobs for each of the for the sets
## of environment variable defined below
- BUILD_TYPE='multi' MAKE_TARGETS='native minimal-net'