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 | |
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
-rw-r--r-- | .travis.yml | 1 | ||||
-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 |
7 files changed, 64 insertions, 74 deletions
diff --git a/.travis.yml b/.travis.yml index 84fa63faf..bfac998c1 100644 --- a/.travis.yml +++ b/.travis.yml | |||
@@ -16,6 +16,7 @@ install: | |||
16 | - npm install -g moxygen | 16 | - npm install -g moxygen |
17 | script: | 17 | script: |
18 | - git rev-parse --short HEAD | 18 | - git rev-parse --short HEAD |
19 | - git diff --name-only HEAD $TRAVIS_BRANCH | ||
19 | - bash util/travis_test.sh | 20 | - bash util/travis_test.sh |
20 | - bash util/travis_build.sh | 21 | - bash util/travis_build.sh |
21 | - bash util/travis_docs.sh | 22 | - bash util/travis_docs.sh |
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 | ||