qmk_firmware/util/travis_build.sh

65 lines
2.4 KiB
Bash
Raw Normal View History

2017-02-07 07:35:10 +01:00
#!/bin/bash
# if docker is installed - call make within the qmk docker image
if command -v docker >/dev/null; then
function make() {
docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@"
}
fi
2017-11-21 05:25:38 +01:00
# test force push
#TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d"
2017-02-07 07:35:10 +01:00
TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}"
TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
MAKE_ALL="make all:default"
2017-02-07 07:35:10 +01:00
if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
2017-02-07 18:36:25 +01:00
exit_code=0
2017-11-21 05:25:38 +01:00
git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE}
if [ $? -eq 128 ]; then
echo "Making default keymaps for all keyboards"
eval $MAKE_ALL
2017-02-07 18:36:25 +01:00
: $((exit_code = $exit_code + $?))
2017-02-07 07:35:10 +01:00
else
2019-08-29 21:44:08 +02:00
NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | grep -Ev '^(lib/python/)' | grep -Ev '(^bin/qmk)' | wc -l)
2017-11-21 05:25:38 +01:00
BRANCH=$(git rev-parse --abbrev-ref HEAD)
# is this branch master or a "non docs, non keyboards" change
2017-11-21 05:25:38 +01:00
if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then
echo "Making default keymaps for all keyboards"
eval $MAKE_ALL
: $((exit_code = $exit_code + $?))
else
# keyboards project format
# /keyboards/board1/rev/keymaps/
# /keyboards/board2/keymaps/
# ensure we strip everything off after and including the keymaps folder to get board and/or revision
MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_\/]+)(?=\/)' | sed 's^/keymaps/.*^^' | sort -u)
2017-11-21 05:25:38 +01:00
for KB in $MKB ; do
KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l)
if [[ $KEYMAP_ONLY -gt 0 ]]; then
echo "Making all keymaps for $KB"
make ${KB}:all
2017-06-18 17:30:59 +02:00
: $((exit_code = $exit_code + $?))
2017-11-21 05:25:38 +01:00
else
MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u)
for KM in $MKM ; do
echo "Making $KM for $KB"
make ${KB}:${KM}
2017-11-21 05:25:38 +01:00
: $((exit_code = $exit_code + $?))
done
2017-11-21 05:25:38 +01:00
fi
done
fi
2019-08-29 21:24:27 +02:00
# Check and run python tests if necessary
PFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -E -e '^(lib/python/)' -e '^(bin/qmk)' | wc -l)
2019-08-29 21:24:27 +02:00
if [ $PFM -gt 0 -o "$BRANCH" = "master" ]; then
echo
echo "Running python tests."
bin/qmk nose2
: $((exit_code = $exit_code + $?))
fi
2017-02-07 07:35:10 +01:00
fi
2017-02-07 18:36:25 +01:00
exit $exit_code
2017-02-07 07:35:10 +01:00
fi