Use qmk docker image for travis CI builds
This commit is contained in:
23
.travis.yml
23
.travis.yml
@@ -11,30 +11,21 @@ env:
|
|||||||
global:
|
global:
|
||||||
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
|
- secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
|
||||||
- MAKEFLAGS="-j3 --output-sync"
|
- MAKEFLAGS="-j3 --output-sync"
|
||||||
|
services:
|
||||||
|
- docker
|
||||||
before_install:
|
before_install:
|
||||||
- wget http://ww1.microchip.com/downloads/en/DeviceDoc/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz || wget http://qmk.fm/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
|
- docker build -t qmkfm/qmk_firmware .
|
||||||
# Need DFU > .5 for dfu-suffix
|
|
||||||
- sudo add-apt-repository --yes ppa:tormodvolden/ppa
|
|
||||||
- sudo apt-get update -qq
|
|
||||||
install:
|
install:
|
||||||
- tar -zxf avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
|
|
||||||
- export PATH="$PATH:$TRAVIS_BUILD_DIR/avr8-gnu-toolchain-linux_x86_64/bin"
|
|
||||||
- npm install -g moxygen
|
- npm install -g moxygen
|
||||||
- sudo apt-get -y --force-yes install dfu-util
|
|
||||||
before_script:
|
|
||||||
- avr-gcc --version
|
|
||||||
script:
|
script:
|
||||||
- git rev-parse --short HEAD
|
- git rev-parse --short HEAD
|
||||||
- make test:all
|
- bash util/travis_test.sh
|
||||||
- make all:all
|
- bash util/travis_build.sh
|
||||||
|
- bash util/travis_docs.sh
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
packages:
|
packages:
|
||||||
- dfu-programmer
|
|
||||||
- pandoc
|
- pandoc
|
||||||
- gcc-arm-none-eabi
|
|
||||||
- binutils-arm-none-eabi
|
|
||||||
- libnewlib-arm-none-eabi
|
|
||||||
- diffutils
|
- diffutils
|
||||||
- dos2unix
|
- dos2unix
|
||||||
- doxygen
|
- doxygen
|
||||||
|
|||||||
@@ -19,11 +19,8 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
|
|||||||
zip \
|
zip \
|
||||||
&& rm -rf /var/lib/apt/lists/*
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
ENV KEYBOARD=ergodox_ez
|
|
||||||
ENV KEYMAP=default
|
|
||||||
|
|
||||||
VOLUME /qmk_firmware
|
VOLUME /qmk_firmware
|
||||||
WORKDIR /qmk_firmware
|
WORKDIR /qmk_firmware
|
||||||
COPY . .
|
COPY . .
|
||||||
|
|
||||||
CMD make clean ; make git-submodule ; make $KEYBOARD:$KEYMAP
|
CMD make all:all
|
||||||
|
|||||||
56
util/travis_build.sh
Executable file
56
util/travis_build.sh
Executable file
@@ -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
|
||||||
29
util/travis_test.sh
Normal file
29
util/travis_test.sh
Normal file
@@ -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
|
||||||
Reference in New Issue
Block a user