diff options
author | zvecr <git@zvecr.com> | 2019-01-17 17:08:23 +0000 |
---|---|---|
committer | Florian Didron <fdidron@users.noreply.github.com> | 2019-06-04 17:59:59 +0900 |
commit | 6005f6b6bbe3f0b6ee721b41da68ae5fcbadf967 (patch) | |
tree | a51b711c18e4ecdd7a4f64dbb445e8fae7338f34 /util | |
parent | 12e79b6972ba575c030889b95caaa1f4ca040653 (diff) |
Use qmk docker image for travis CI builds
Diffstat (limited to 'util')
-rwxr-xr-x | util/travis_build.sh | 56 | ||||
-rw-r--r-- | util/travis_test.sh | 29 |
2 files changed, 85 insertions, 0 deletions
diff --git a/util/travis_build.sh b/util/travis_build.sh new file mode 100755 index 0000000000..02a749e851 --- /dev/null +++ b/util/travis_build.sh @@ -0,0 +1,56 @@ +#!/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 qmkfm/qmk_firmware make "$@" + } +fi + +# test force push +#TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" + +TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" +TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" +MAKE_ALL="make all:default" + +if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then + exit_code=0 + git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} + if [ $? -eq 128 ]; then + echo "Making default keymaps for all keyboards" + eval $MAKE_ALL + : $((exit_code = $exit_code + $?)) + else + NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | wc -l) + BRANCH=$(git rev-parse --abbrev-ref HEAD) + # is this branch master or a "non docs, non keyboards" change + 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) + 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 + : $((exit_code = $exit_code + $?)) + 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} + : $((exit_code = $exit_code + $?)) + done + fi + done + fi + fi + exit $exit_code +fi diff --git a/util/travis_test.sh b/util/travis_test.sh new file mode 100644 index 0000000000..b6ec06f059 --- /dev/null +++ b/util/travis_test.sh @@ -0,0 +1,29 @@ +#!/bin/bash + +TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" +TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" + +# test force push +#TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" + +NUM_IMPACTING_CHANGES=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ecv '^(docs/)') +BRANCH=$(git rev-parse --abbrev-ref HEAD) + +if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip test]"* ]]; then + echo "Skipping due to commit message" + exit 0 +fi + +if [ "$BRANCH" != "master" ] && [ "$NUM_IMPACTING_CHANGES" == "0" ]; then + echo "Skipping due to changes not impacting tests" + exit 0 +fi + +# 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 qmkfm/qmk_firmware make "$@" + } +fi + +make test:all |