11# boards are ordered by priority so that when monitoring a build developers get feedback on the important ones first.
2- env :
2+ matrix :
33# Do not define 'global' env vars here. They cannot be used with API builds
4- matrix :
5- - MAKETARGET=lint
6- - MAKETARGET=zip_devo8
7- - MAKETARGET=zip_devo10
8- - MAKETARGET=zip_devo12
9- - MAKETARGET=zip_devo7e
10- - MAKETARGET=zip_devof12e
11- - MAKETARGET=zip_t8sg
12- - MAKETARGET=zip_at9
13- - MAKETARGET=zip_devof7
14- - MAKETARGET=zip_win_emu_devo8
15- - MAKETARGET=zip_emu_devo8
16- - MAKETARGET=test
17- # - COMPILER=latest TARGET=devo8
4+ fast_finish : true
5+ include :
6+ - stage : deploy
7+ env : MAKETARGET="zips winzips"
8+ - stage : build
9+ env : MAKETARGET=lint
10+ - env : MAKETARGET=zip_devo8
11+ - env : MAKETARGET=zip_devo10
12+ - env : MAKETARGET=zip_devo12
13+ - env : MAKETARGET=zip_devo7e
14+ - env : MAKETARGET=zip_devof12e
15+ - env : MAKETARGET=zip_t8sg
16+ - env : MAKETARGET=zip_at9
17+ - env : MAKETARGET=zip_devof7
18+ - env : MAKETARGET=zip_win_emu_devo8
19+ - env : MAKETARGET=zip_emu_devo8
20+ - env : MAKETARGET=test
21+
22+ stages :
23+ - name : deploy
24+ if : type IN (api, cron)
25+ - name : build
26+ if : type NOT IN (api, cron)
1827
19- matrix :
20- fast_finish : true
21-
2228dist : trusty
2329
2430addons :
@@ -32,119 +38,137 @@ addons:
3238 - mingw32-runtime
3339 - libfltk1.3-dev
3440 - gcovr
35- # - gcc-arm-none-eabi
3641
37- # Do NOT set these. They set 'CC' which breaks the build
3842language : minimal
43+ # Do NOT set these. They set 'CC' which breaks the build
3944# compiler: gcc
4045
4146git :
4247 depth : 5
4348
4449before_install :
45- - pip install --user cpp-coveralls cpplint
46- - if [ ! -d "$HOME/gcc-arm-none-eabi-8-2018-q4-major/bin" ]; then
47- pushd $HOME;
48- curl --retry 10 --retry-max-time 120 -L "https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2" | tar xfj -;
49- popd;
50- fi;
51- # don't build 'tests' because they don't work on a cross-compile, so we need to specify 'DIRS' explicitly
52- - if [ ! -d "$HOME/fltk-1.3.0-w32/bin" ]; then
53- mkdir $HOME/src;
54- mkdir $HOME/fltk-1.3.0-w32;
55- pushd $HOME/src;
56- curl --retry 10 --retry-max-time 120 -L "http://fltk.org/pub/fltk/1.3.0/fltk-1.3.0-source.tar.gz" | tar xzf -;
57- cd fltk-1.3.0;
58- ./configure --prefix=$HOME/fltk-1.3.0-w32 --enable-localzlib --enable-localpng --disable-gl --host=i586-mingw32msvc &&
59- make -j2 DIRS="jpeg zlib png src fluid" &&
60- make install DIRS="jpeg zlib png src fluid";
61- popd;
62- fi;
63- - if [ ! -d "$HOME/portaudio-w32/bin" ]; then
64- mkdir $HOME/src;
65- mkdir $HOME/portaudio-w32;
66- pushd $HOME/src;
67- curl --retry 10 --retry-max-time 120 -L "http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz" | tar xzf -;
68- cd portaudio;
69- ./configure --prefix=$HOME/portaudio-w32 --host=i586-mingw32msvc &&
70- make -j2 install;
71- popd;
72- fi;
73- - if [ ! -d "$HOME/mpg123-w32/bin" ]; then
74- mkdir $HOME/src;
75- mkdir $HOME/mpg123-w32;
76- pushd $HOME/src;
77- curl --retry 10 --retry-max-time 120 -L "http://www.mpg123.de/download/mpg123-1.23.8.tar.bz2" | tar xjf -;
78- cd mpg123-1.23.8;
79- ./configure --prefix=$HOME/mpg123-w32 --host=i586-mingw32msvc --disable-shared && make;
80- make -j2 install;
81- strip --strip-unneeded $HOME/mpg123-w32/bin/mpg123.exe;
82- popd;
83- fi;
84- - openssl aes-256-cbc -K $encrypted_54cd4d6ff016_key -iv $encrypted_54cd4d6ff016_iv -in install_nightlies.tar.enc -out install_nightlies.tar -d;
85- tar -xf install_nightlies.tar;
86- rm -f install_nightlies.tar
50+ # We'll put env variables global to all builds here
51+ - export GITHUB_TOKEN='789c538d758e0a718c8ae537b7f6656776e20d768de18d546014e20876e1898933cd94648f75e06117e20000b71f080d'
52+ # TRAVIS does not override the TRAVIS_COMMIT_MSG with the 'message' value passed via the API (travis issue #10184)
53+ - source <(curl -s -L "https://api.travis-ci.org/repos/$TRAVIS_REPO_SLUG/builds/$TRAVIS_BUILD_ID" | python -c 'import sys, json; a = json.load(sys.stdin); print "export TRAVIS_COMMIT_MSG=\"" + a.get("message","").replace("\"", "\\\"") + "\""')
8754
8855install :
89- - export GITHUB_TOKEN='789c538d758e0a718c8ae537b7f6656776e20d768de18d546014e20876e1898933cd94648f75e06117e20000b71f080d'
90- - export PATH=$PATH:$HOME/gcc-arm-none-eabi-8-2018-q4-major/bin
91- # - "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\""a
92- - curl -s -L "https://api.travis-ci.org/repos/$TRAVIS_REPO_SLUG/builds/$TRAVIS_BUILD_ID" | python -c 'import sys, json; a = json.load(sys.stdin); print "export TRAVIS_EVENT_TYPE=" + a.get("event_type",""); print "export TRAVIS_COMMIT_MSG=\"" + a.get("message","").replace("\"", "\\\"") + "\""'
93- - source <(curl -s -L "https://api.travis-ci.org/repos/$TRAVIS_REPO_SLUG/builds/$TRAVIS_BUILD_ID" | python -c 'import sys, json; a = json.load(sys.stdin); print "export TRAVIS_EVENT_TYPE=" + a.get("event_type",""); print "export TRAVIS_COMMIT_MSG=\"" + a.get("message","").replace("\"", "\\\"") + "\""')
94- - if [[ "$MAKETARGET" == *"win"* ]]; then
95- export FLTK_DIR=$HOME/fltk-1.3.0-w32;
96- export PORTAUDIO_DIR=$HOME/portaudio-w32;
97- export MPG123_DIR=$HOME/mpg123-w32;
98- fi;
56+ - |
57+ export reqs=""
58+ case $MAKETARGET in
59+ test) export reqs="$reqs test" ;;
60+ lint) export reqs="$reqs lint" ;;
61+ *win*) export reqs="$reqs win" ;;&
62+ *emu*) ;; # catch emulator builds that don't need arm
63+ *) export reqs="$reqs arm" ;;
64+ esac
65+ echo "Requirements: $reqs"
66+ # These are separated to make it easier to visualize the build in the travis logs
67+ - if [[ $reqs == *"test"* ]]; then pip install --user cpp-coveralls; fi
68+ - if [[ $reqs == *"lint"* ]]; then pip install --user cpplint; fi
69+ - |
70+ if [[ $reqs == *"arm"* ]]; then
71+ if [[ ! -d "$HOME/gcc-arm-none-eabi-8-2018-q4-major/bin" ]]; then
72+ pushd $HOME
73+ curl --retry 10 --retry-max-time 120 -L \
74+ "https://developer.arm.com/-/media/Files/downloads/gnu-rm/8-2018q4/gcc-arm-none-eabi-8-2018-q4-major-linux.tar.bz2" | tar xfj -
75+ popd;
76+ popd
77+ fi
78+ export PATH=$PATH:$HOME/gcc-arm-none-eabi-8-2018-q4-major/bin
79+ fi
80+ - |
81+ if [[ $reqs == *"win"* ]]; then
82+ if [[ ! -d "$HOME/fltk-1.3.0-w32/bin" ]]; then
83+ # don't build 'tests' because they don't work on a cross-compile, so we need to specify 'DIRS' explicitly
84+ mkdir $HOME/src
85+ mkdir $HOME/fltk-1.3.0-w32
86+ pushd $HOME/src
87+ curl --retry 10 --retry-max-time 120 -L "http://fltk.org/pub/fltk/1.3.0/fltk-1.3.0-source.tar.gz" | tar xzf -
88+ cd fltk-1.3.0
89+ ./configure --prefix=$HOME/fltk-1.3.0-w32 --enable-localzlib --enable-localpng --disable-gl --host=i586-mingw32msvc && \
90+ make -j2 DIRS="jpeg zlib png src fluid" && \
91+ make install DIRS="jpeg zlib png src fluid"
92+ popd
93+ fi
94+ export FLTK_DIR=$HOME/fltk-1.3.0-w32
95+ fi
96+ - |
97+ if [[ $reqs == *"win"* ]]; then
98+ if [[ ! -d "$HOME/portaudio-w32/bin" ]]; then
99+ mkdir $HOME/src
100+ mkdir $HOME/portaudio-w32
101+ pushd $HOME/src
102+ curl --retry 10 --retry-max-time 120 -L "http://www.portaudio.com/archives/pa_stable_v19_20140130.tgz" | tar xzf -
103+ cd portaudio
104+ ./configure --prefix=$HOME/portaudio-w32 --host=i586-mingw32msvc && \
105+ make -j2 install
106+ popd
107+ fi
108+ export PORTAUDIO_DIR=$HOME/portaudio-w32
109+ fi
110+ - |
111+ if [[ $reqs == *"win"* ]]; then
112+ if [[ ! -d "$HOME/mpg123-w32/bin" ]]; then
113+ mkdir $HOME/src
114+ mkdir $HOME/mpg123-w32
115+ pushd $HOME/src
116+ curl --retry 10 --retry-max-time 120 -L "http://www.mpg123.de/download/mpg123-1.23.8.tar.bz2" | tar xjf -
117+ cd mpg123-1.23.8
118+ ./configure --prefix=$HOME/mpg123-w32 --host=i586-mingw32msvc --disable-shared && make && \
119+ make -j2 install
120+ strip --strip-unneeded $HOME/mpg123-w32/bin/mpg123.exe
121+ popd
122+ fi
123+ export MPG123_DIR=$HOME/mpg123-w32
124+ fi
125+ - |
126+ if [[ "$TRAVIS_EVENT_TYPE" == "api" || "$TRAVIS_EVENT_TYPE" == "cron" ]]; then
127+ openssl aes-256-cbc -K $encrypted_54cd4d6ff016_key -iv $encrypted_54cd4d6ff016_iv -in install_nightlies.tar.enc -out install_nightlies.tar -d
128+ tar -xf install_nightlies.tar;
129+ rm -f install_nightlies.tar
130+ fi
99131
100132before_script :
101- - echo $PATH
102- - echo $HOME
103- - arm-none-eabi-gcc --version
133+ - env | sort
134+ - arm-none-eabi-gcc --version 2> /dev/null | true
104135
105136script :
106- - cd src;
107- - if [[ "$TRAVIS_EVENT_TYPE" == "cron" && "$ MAKETARGET" == "zip_devo8" ]]; then
108- export MAKETARGET="zips winzips";
109- export FLTK_DIR=$HOME/fltk-1.3.0-w32;
110- export PORTAUDIO_DIR=$HOME/portaudio-w32 ;
111- export MPG123_DIR=$HOME/mpg123-w32;
112- fi;
113- - make -j2 $MAKETARGET;
114- - if [ "$MAKETARGET" == "test" ]; then
115- ./test.elf ;
116- fi ;
117- - ../utils/archive_build_size.py "$MAKETARGET" || /bin/true;
137+ - cd src
138+ - make -j2 $ MAKETARGET
139+ - |
140+ if [[ "$TRAVIS_EVENT_TYPE" == "push" || "$TRAVIS_EVENT_TYPE" == "pull_request" ]]; then
141+ ../utils/archive_build_size.py "$MAKETARGET" || /bin/true ;
142+ fi
143+ - |
144+ if [[ " $MAKETARGET" == "test" ]]; then
145+ ./test.elf
146+ ../utils/coverage-summary.sh ;
147+ coveralls -r . -b . --gcov-options '\-lp' -E '.*/tests/test_.*' -E '.*/objs/' ;
148+ fi
118149
119150after_success :
120- - if [ "$TRAVIS_EVENT_TYPE" == "api" ]; then
121- export NIGHTLY_DATE=$(echo $TRAVIS_COMMIT_MSG | egrep -o '[[:digit:]]{4}-[[:digit:]]{2}-[[:digit:]]{2}');
122- if [[ "$TRAVIS_COMMIT_MSG" == "Nightly Build "* ]] && [ "$NIGHTLY_DATE" != "" ]; then
123- echo "Uploading Nightly - $NIGHTLY_DATE";
124- ../utils/upload_test_build.pl -skip -nightly "$NIGHTLY_DATE" -delete;
125- ../utils/upload_test_build.pl -skip -nightly "$NIGHTLY_DATE" *.zip;
126- else
127- export RELEASE_VERSION=$(echo $TRAVIS_BRANCH | egrep -o '[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+');
128- if [ "$RELEASE_VERSION" != "" ] && [ "$TRAVIS_BRANCH" == "v$RELEASE_VERSION" ]; then
129- echo "Releasing $RELEASE_VERSION";
130- ../utils/upload_test_build.pl -skip -release "$RELEASE_VERSION" -delete;
131- ../utils/upload_test_build.pl -skip -release "$RELEASE_VERSION" *.zip;
132- fi;
151+ - |
152+ if [[ "TRAVIS_BUILD_STAGE_NAME != "Deploy" ]]; then
153+ travis_terminate 0
154+ fi
155+ - |
156+ if [[ "$TRAVIS_EVENT_TYPE" == "api" && $TRAVIS_BRANCH != "master" ]]; then
157+ export RELEASE_VERSION=$(echo $TRAVIS_BRANCH | egrep -o '[[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+');
158+ if [[ "$RELEASE_VERSION" != "" && "$TRAVIS_BRANCH" == "v$RELEASE_VERSION" ]]; then
159+ echo "Releasing $RELEASE_VERSION";
160+ ../utils/upload_test_build.pl -skip -release "$RELEASE_VERSION" -delete;
161+ ../utils/upload_test_build.pl -skip -release "$RELEASE_VERSION" *.zip;
133162 fi;
134- fi;
135- - if [[ "$TRAVIS_EVENT_TYPE" == "cron" && "$MAKETARGET" == "zips winzips" ]]; then
136- export NIGHTLY_DATE=$(date "+%Y-%m-%d");
137- if [ "$NIGHTLY_DATE" != "" ]; then
163+ else
164+ export NIGHTLY_DATE=$(date "+%Y-%m-%d");
165+ if [[ "$NIGHTLY_DATE" != "" ]]; then
138166 echo "Uploading Nightly - $NIGHTLY_DATE";
139167 ../utils/upload_test_build.pl -skip -nightly "$NIGHTLY_DATE" -delete;
140168 ../utils/upload_test_build.pl -skip -nightly "$NIGHTLY_DATE" *.zip;
141- fi;
142- fi;
143- - if [ "$MAKETARGET" == "test" ]; then
144- ../utils/coverage-summary.sh;
145- coveralls -r . -b . --gcov-options '\-lp' -E '.*/tests/test_.*' -E '.*/objs/';
146- fi;
147-
169+ fi
170+ fi
171+
148172cache :
149173 apt : true
150174 directories :
0 commit comments