diff options
| author | Joel Challis <git@zvecr.com> | 2019-11-05 00:18:57 +0000 |
|---|---|---|
| committer | Drashna Jaelre <drashna@live.com> | 2019-11-04 16:18:57 -0800 |
| commit | d382eeeb9d3b795c16533c5f64ab1455e774f925 (patch) | |
| tree | 9fa7bef8d19813fce3b8f7d60ebbfd3e87dd7393 /util | |
| parent | efa28d0f5cca55b0dfecaddd0860ec3dfeab8bb0 (diff) | |
| download | qmk_firmware-d382eeeb9d3b795c16533c5f64ab1455e774f925.tar.gz qmk_firmware-d382eeeb9d3b795c16533c5f64ab1455e774f925.zip | |
CI - Fix change detection (#7038)
* Fix travis change detection
* Fix travis change detection - add back python ignore
Diffstat (limited to 'util')
| -rwxr-xr-x | util/travis_build.sh | 79 | ||||
| -rwxr-xr-x | util/travis_compiled_push.sh | 1 | ||||
| -rwxr-xr-x | util/travis_docs.sh | 1 | ||||
| -rwxr-xr-x | util/travis_push.sh | 5 | ||||
| -rw-r--r-- | util/travis_test.sh | 27 | ||||
| -rwxr-xr-x | util/travis_utils.sh | 24 |
6 files changed, 63 insertions, 74 deletions
diff --git a/util/travis_build.sh b/util/travis_build.sh index 225c8548f..6d5dbed68 100755 --- a/util/travis_build.sh +++ b/util/travis_build.sh | |||
| @@ -1,57 +1,42 @@ | |||
| 1 | #!/bin/bash | 1 | #!/bin/bash |
| 2 | 2 | ||
| 3 | # if docker is installed - patch calls to within the qmk docker image | 3 | source util/travis_utils.sh |
| 4 | if command -v docker >/dev/null; then | 4 | |
| 5 | function make() { | 5 | NUM_CORE_CHANGES=$(echo "$QMK_CHANGES" | grep -Ecv -e '^(docs/)' -e '^(keyboards/)' -e '^(layouts/)' -e '^(util/)' -e '^(lib/python/)' -e '^(bin/qmk)' -e '^(requirements.txt)' -e '(.travis.yml)') |
| 6 | docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@" | 6 | |
| 7 | } | 7 | if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip build]"* ]]; then |
| 8 | echo "Skipping due to commit message" | ||
| 9 | exit 0 | ||
| 8 | fi | 10 | fi |
| 9 | 11 | ||
| 10 | # test force push | 12 | if [ "$LOCAL_BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then |
| 11 | #TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" | 13 | echo "Making default keymaps for all keyboards" |
| 14 | make all:default | ||
| 15 | exit $? | ||
| 16 | fi | ||
| 12 | 17 | ||
| 13 | TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" | 18 | exit_code=0 |
| 14 | TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" | ||
| 15 | MAKE_ALL="make all:default" | ||
| 16 | 19 | ||
| 17 | if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then | 20 | for KB in $(make list-keyboards); do |
| 18 | exit_code=0 | 21 | KEYBOARD_CHANGES=$(echo "$QMK_CHANGES" | grep -E '^(keyboards/'${KB}'/)') |
| 19 | git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | 22 | if [[ -z "$KEYBOARD_CHANGES" ]]; then |
| 20 | if [ $? -eq 128 ]; then | 23 | # skip as no changes for this keyboard |
| 21 | # We don't know what changed so just build the default keymaps | 24 | continue |
| 22 | echo "Making default keymaps for all keyboards (fallback)" | 25 | fi |
| 23 | eval $MAKE_ALL | 26 | |
| 27 | KEYMAP_ONLY=$(echo "$KEYBOARD_CHANGES" | grep -cv /keymaps/) | ||
| 28 | if [[ $KEYMAP_ONLY -gt 0 ]]; then | ||
| 29 | echo "Making all keymaps for $KB" | ||
| 30 | make ${KB}:all | ||
| 24 | : $((exit_code = $exit_code + $?)) | 31 | : $((exit_code = $exit_code + $?)) |
| 25 | else | 32 | else |
| 26 | NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | grep -Ev '^(docs/)' | grep -Ev '^(lib/python/)' | grep -Ev '^(bin/qmk)' | grep -Ev '^(requirements.txt)' | grep -Ev '^(util/)' | wc -l) | 33 | CHANGED_KEYMAPS=$(echo "$KEYBOARD_CHANGES" | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_-]+)(?=\/)') |
| 27 | BRANCH=$(git rev-parse --abbrev-ref HEAD) | 34 | for KM in $CHANGED_KEYMAPS ; do |
| 28 | # is this branch master or a "non docs, non keyboards" change | 35 | echo "Making $KM for $KB" |
| 29 | if [ $NEFM -gt 0 -o "$BRANCH" = "master" ]; then | 36 | make ${KB}:${KM} |
| 30 | echo "Making default keymaps for all keyboards" | ||
| 31 | eval $MAKE_ALL | ||
| 32 | : $((exit_code = $exit_code + $?)) | 37 | : $((exit_code = $exit_code + $?)) |
| 33 | else | 38 | done |
| 34 | # keyboards project format | ||
| 35 | # /keyboards/board1/rev/keymaps/ | ||
| 36 | # /keyboards/board2/keymaps/ | ||
| 37 | # ensure we strip everything off after and including the keymaps folder to get board and/or revision | ||
| 38 | MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z0-9_\/]+)(?=\/)' | sed 's^/keymaps/.*^^' | sort -u) | ||
| 39 | for KB in $MKB ; do | ||
| 40 | KEYMAP_ONLY=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/'${KB}'/keymaps/)' | wc -l) | ||
| 41 | if [[ $KEYMAP_ONLY -gt 0 ]]; then | ||
| 42 | echo "Making all keymaps for $KB" | ||
| 43 | make ${KB}:all | ||
| 44 | : $((exit_code = $exit_code + $?)) | ||
| 45 | else | ||
| 46 | MKM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards/'${KB}'/keymaps/)([a-zA-Z0-9_]+)(?=\/)' | sort -u) | ||
| 47 | for KM in $MKM ; do | ||
| 48 | echo "Making $KM for $KB" | ||
| 49 | make ${KB}:${KM} | ||
| 50 | : $((exit_code = $exit_code + $?)) | ||
| 51 | done | ||
| 52 | fi | ||
| 53 | done | ||
| 54 | fi | ||
| 55 | fi | 39 | fi |
| 56 | exit $exit_code | 40 | done |
| 57 | fi | 41 | |
| 42 | exit $exit_code | ||
diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh index 8ca65f21a..e0490cd70 100755 --- a/util/travis_compiled_push.sh +++ b/util/travis_compiled_push.sh | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | #!/bin/bash | 1 | #!/bin/bash |
| 2 | 2 | ||
| 3 | source util/travis_utils.sh | ||
| 3 | source util/travis_push.sh | 4 | source util/travis_push.sh |
| 4 | 5 | ||
| 5 | set -o errexit -o nounset | 6 | set -o errexit -o nounset |
diff --git a/util/travis_docs.sh b/util/travis_docs.sh index 5cfd63466..93c2d7186 100755 --- a/util/travis_docs.sh +++ b/util/travis_docs.sh | |||
| @@ -1,5 +1,6 @@ | |||
| 1 | #!/bin/bash | 1 | #!/bin/bash |
| 2 | 2 | ||
| 3 | source util/travis_utils.sh | ||
| 3 | source util/travis_push.sh | 4 | source util/travis_push.sh |
| 4 | 5 | ||
| 5 | if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip docs]"* ]] ; then | 6 | if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip docs]"* ]] ; then |
diff --git a/util/travis_push.sh b/util/travis_push.sh index d100f9d48..7f7d4c2c6 100755 --- a/util/travis_push.sh +++ b/util/travis_push.sh | |||
| @@ -1,10 +1,5 @@ | |||
| 1 | # Use this by sourcing it in your script. | 1 | # Use this by sourcing it in your script. |
| 2 | 2 | ||
| 3 | TRAVIS_BRANCH="${TRAVIS_BRANCH:master}" | ||
| 4 | TRAVIS_PULL_REQUEST="${TRAVIS_PULL_REQUEST:false}" | ||
| 5 | TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" | ||
| 6 | TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" | ||
| 7 | |||
| 8 | if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then | 3 | if [[ "$TRAVIS_BRANCH" == "master" && "$TRAVIS_PULL_REQUEST" == "false" ]] ; then |
| 9 | git config --global user.name "QMK Bot" | 4 | git config --global user.name "QMK Bot" |
| 10 | git config --global user.email "hello@qmk.fm" | 5 | git config --global user.email "hello@qmk.fm" |
diff --git a/util/travis_test.sh b/util/travis_test.sh index 9b7402c28..95991907e 100644 --- a/util/travis_test.sh +++ b/util/travis_test.sh | |||
| @@ -1,26 +1,9 @@ | |||
| 1 | #!/bin/bash | 1 | #!/bin/bash |
| 2 | 2 | ||
| 3 | # if docker is installed - patch calls to within the qmk docker image | 3 | source util/travis_utils.sh |
| 4 | if command -v docker >/dev/null; then | ||
| 5 | function make() { | ||
| 6 | docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@" | ||
| 7 | } | ||
| 8 | function qmk() { | ||
| 9 | docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container bin/qmk "$@" | ||
| 10 | } | ||
| 11 | fi | ||
| 12 | |||
| 13 | TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" | ||
| 14 | TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" | ||
| 15 | |||
| 16 | # test force push | ||
| 17 | #TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" | ||
| 18 | |||
| 19 | BRANCH=$(git rev-parse --abbrev-ref HEAD) | ||
| 20 | CHANGES=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE}) | ||
| 21 | 4 | ||
| 22 | NUM_CORE_CHANGES=$(echo "$CHANGES" | grep -Ecv -e '^(docs/)' -e '^(keyboards/)' -e '^(layouts/)') | 5 | NUM_CORE_CHANGES=$(echo "$QMK_CHANGES" | grep -Ecv -e '^(docs/)' -e '^(keyboards/)' -e '^(layouts/)' -e '^(util/)' -e '^(lib/python/)' -e '^(bin/qmk)' -e '^(requirements.txt)' -e '(.travis.yml)') |
| 23 | NUM_PY_CHANGES=$(echo "$CHANGES" | grep -Ec -e '^(lib/python/)' -e '^(bin/qmk)') | 6 | NUM_PY_CHANGES=$(echo "$QMK_CHANGES" | grep -Ec -e '^(lib/python/)' -e '^(bin/qmk)') |
| 24 | 7 | ||
| 25 | if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip test]"* ]]; then | 8 | if [[ "$TRAVIS_COMMIT_MESSAGE" == *"[skip test]"* ]]; then |
| 26 | echo "Skipping due to commit message" | 9 | echo "Skipping due to commit message" |
| @@ -29,14 +12,14 @@ fi | |||
| 29 | 12 | ||
| 30 | exit_code=0 | 13 | exit_code=0 |
| 31 | 14 | ||
| 32 | if [ "$BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then | 15 | if [ "$LOCAL_BRANCH" == "master" ] || [ "$NUM_CORE_CHANGES" != "0" ]; then |
| 33 | echo "Running tests." | 16 | echo "Running tests." |
| 34 | make test:all | 17 | make test:all |
| 35 | : $((exit_code = $exit_code + $?)) | 18 | : $((exit_code = $exit_code + $?)) |
| 36 | 19 | ||
| 37 | fi | 20 | fi |
| 38 | 21 | ||
| 39 | if [ "$BRANCH" == "master" ] || [ "$NUM_PY_CHANGES" != "0" ]; then | 22 | if [ "$LOCAL_BRANCH" == "master" ] || [ "$NUM_PY_CHANGES" != "0" ]; then |
| 40 | echo "Running python tests." | 23 | echo "Running python tests." |
| 41 | qmk pytest | 24 | qmk pytest |
| 42 | : $((exit_code = $exit_code + $?)) | 25 | : $((exit_code = $exit_code + $?)) |
diff --git a/util/travis_utils.sh b/util/travis_utils.sh new file mode 100755 index 000000000..031bcda1a --- /dev/null +++ b/util/travis_utils.sh | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | # Use this by sourcing it in your script. | ||
| 2 | |||
| 3 | # Provide sane defaults for travis environment | ||
| 4 | TRAVIS_BRANCH="${TRAVIS_BRANCH:master}" | ||
| 5 | TRAVIS_PULL_REQUEST="${TRAVIS_PULL_REQUEST:false}" | ||
| 6 | TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}" | ||
| 7 | TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}" | ||
| 8 | |||
| 9 | # test force push | ||
| 10 | #TRAVIS_COMMIT_RANGE="c287f1bfc5c8...81f62atc4c1d" | ||
| 11 | |||
| 12 | # Extra variables | ||
| 13 | LOCAL_BRANCH=${TRAVIS_PULL_REQUEST_BRANCH:-${TRAVIS_BRANCH}} | ||
| 14 | QMK_CHANGES=$(git diff --name-only HEAD ${TRAVIS_BRANCH}) | ||
| 15 | |||
| 16 | # if docker is installed - patch calls to within the qmk docker image | ||
| 17 | if command -v docker >/dev/null; then | ||
| 18 | function make() { | ||
| 19 | docker run --rm -e MAKEFLAGS="$MAKEFLAGS" -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container make "$@" | ||
| 20 | } | ||
| 21 | function qmk() { | ||
| 22 | docker run --rm -w /qmk_firmware/ -v "$PWD":/qmk_firmware --user $(id -u):$(id -g) qmkfm/base_container bin/qmk "$@" | ||
| 23 | } | ||
| 24 | fi | ||
