From 904e7641e73be45a325a52c708268d8c49b58c84 Mon Sep 17 00:00:00 2001 From: Josh Klar Date: Mon, 17 Sep 2018 13:25:37 -0700 Subject: [PATCH] CircleCI: Ensure all boards can at least compile a hex on each commit --- .circleci/config.yml | 88 ++++++++++++++++++++++++++++++++++++++++++-- .gitmodules | 3 -- Makefile | 46 ++++++++++++++++++++--- 3 files changed, 124 insertions(+), 13 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 83edb4b..b897dd6 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -12,17 +12,73 @@ jobs: - checkout - restore_cache: keys: - - v1-kmk-lint-{{ checksum "Pipfile.lock" }} + - v1-kmk-venv-{{ checksum "Pipfile.lock" }} - run: pip install pipenv==2018.7.1 - - run: pipenv install --dev - - run: pipenv run flake8 + - run: make lint - save_cache: - key: v1-kmk-lint-{{ checksum "Pipfile.lock" }} + key: v1-kmk-venv-{{ checksum "Pipfile.lock" }} paths: - .venv + build_pyboard: + docker: + - image: 'python:3.7' + + environment: + KMK_TEST: 1 + PIPENV_VENV_IN_PROJECT: 1 + + steps: + - checkout + - restore_cache: + keys: + - v1-kmk-venv-{{ checksum "Pipfile.lock" }} + + - run: pip install pipenv==2018.7.1 + - run: apt-get update && apt-get install -y gcc-arm-none-eabi gettext wget unzip + + - run: make BOARD=boards/noop.py build-pyboard + + build_feather_nrf52832: + docker: + - image: 'python:3.7' + + environment: + KMK_TEST: 1 + PIPENV_VENV_IN_PROJECT: 1 + + steps: + - checkout + - restore_cache: + keys: + - v1-kmk-venv-{{ checksum "Pipfile.lock" }} + + - run: pip install pipenv==2018.7.1 + - run: apt-get update && apt-get install -y gcc-arm-none-eabi gettext wget unzip + + - run: make BOARD=boards/noop.py build-feather-nrf52832 + + build_teensy_31: + docker: + - image: 'python:3.7' + + environment: + KMK_TEST: 1 + PIPENV_VENV_IN_PROJECT: 1 + + steps: + - checkout + - restore_cache: + keys: + - v1-kmk-venv-{{ checksum "Pipfile.lock" }} + + - run: pip install pipenv==2018.7.1 + - run: apt-get update && apt-get install -y gcc-arm-none-eabi gettext wget unzip + + - run: make BOARD=boards/noop.py build-teensy-3.1 + workflows: version: 2 build-deploy: @@ -33,3 +89,27 @@ workflows: only: /.*/ tags: only: /.*/ + - build_pyboard: + filters: + branches: + only: /.*/ + tags: + only: /.*/ + requires: + - lint + - build_feather_nrf52832: + filters: + branches: + only: /.*/ + tags: + only: /.*/ + requires: + - lint + - build_teensy_31: + filters: + branches: + only: /.*/ + tags: + only: /.*/ + requires: + - lint diff --git a/.gitmodules b/.gitmodules index ae85aab..69b5a05 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,14 +1,11 @@ [submodule "circuitpython"] path = vendor/circuitpython url = https://github.com/adafruit/circuitpython.git - branch = "9b98ad779468676c3d5f1efdc06b454aaed7c407" ignore = dirty [submodule "upy-lib"] path = vendor/upy-lib url = https://github.com/micropython/micropython-lib.git - branch = "f20d89c6aad9443a696561ca2a01f7ef0c8fb302" [submodule "micropython"] path = vendor/micropython url = https://github.com/micropython/micropython.git - branch = "3cd2c281d7cf990b3afb78287a58cf4ee3f23ca5" ignore = dirty diff --git a/Makefile b/Makefile index d2aac9c..79ad192 100644 --- a/Makefile +++ b/Makefile @@ -32,7 +32,7 @@ lint: devdeps .micropython-deps: .submodules @echo "===> Building micropython/mpy-cross" @make -C vendor/micropython/mpy-cross - @touch .circuitpy-deps + @touch .micropython-deps circuitpy-deps: .circuitpy-deps @@ -77,15 +77,25 @@ micropython-freeze-kmk-stm32: freeze-stm32-vendor-deps @rm -rf vendor/micropython/ports/stm32/freeze/kmk* @cp -av kmk vendor/micropython/ports/stm32/freeze/ -circuitpy-flash-nrf: - @echo "===> Building and flashing CircuitPython with KMK and your keymap" - @make -C vendor/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze clean dfu-gen dfu-flash +circuitpy-build-nrf: + @echo "===> Building CircuitPython" + @make -C vendor/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze clean all -micropython-flash-teensy3.1: +circuitpy-flash-nrf: circuitpy-build-nrf + @echo "===> Flashing CircuitPython with KMK and your keymap" + @make -C vendor/circuitpython/ports/nrf BOARD=feather_nrf52832 SERIAL=${AMPY_PORT} SD=s132 FROZEN_MPY_DIR=freeze dfu-gen dfu-flash + +micropython-build-teensy3.1: @cp entrypoints/teensy31.py vendor/micropython/ports/teensy/memzip_files/main.py + @make -C vendor/micropython/ports/teensy/ BOARD=TEENSY_3.1 all + +micropython-flash-teensy3.1: micropython-build-teensy3.1 @make -C vendor/micropython/ports/teensy/ BOARD=TEENSY_3.1 deploy -micropython-flash-pyboard: +micropython-build-pyboard: + @make -j4 -C vendor/micropython/ports/stm32/ BOARD=PYBV11 FROZEN_MPY_DIR=freeze all + +micropython-flash-pyboard: micropython-build-pyboard @make -j4 -C vendor/micropython/ports/stm32/ BOARD=PYBV11 FROZEN_MPY_DIR=freeze deploy micropython-flash-pyboard-entrypoint: @@ -107,8 +117,16 @@ circuitpy-flash-nrf-entrypoint: ifndef BOARD build-feather-nrf52832: @echo "===> Must provide a board (usually from boards/...) to build!" + +flash-feather-nrf52832: + @echo "===> Must provide a board (usually from boards/...) to build!" else build-feather-nrf52832: lint devdeps circuitpy-deps circuitpy-freeze-kmk-nrf + @echo "===> Preparing keyboard script for bundling into CircuitPython" + @cp -av ${BOARD} vendor/circuitpython/ports/nrf/freeze/kmk_keyboard_user.py + @$(MAKE) circuitpy-build-nrf + +flash-feather-nrf52832: lint devdeps circuitpy-deps circuitpy-freeze-kmk-nrf @echo "===> Preparing keyboard script for bundling into CircuitPython" @cp -av ${BOARD} vendor/circuitpython/ports/nrf/freeze/kmk_keyboard_user.py @$(MAKE) circuitpy-flash-nrf circuitpy-flash-nrf-entrypoint @@ -117,8 +135,16 @@ endif ifndef BOARD build-teensy-3.1: @echo "===> Must provide a board (usually from boards/...) to build!" + +flash-teensy-3.1: + @echo "===> Must provide a board (usually from boards/...) to build!" else build-teensy-3.1: lint devdeps micropython-deps micropython-freeze-kmk-teensy3.1 + @echo "===> Preparing keyboard script for bundling into MicroPython" + @cp -av ${BOARD} vendor/micropython/ports/teensy/freeze/kmk_keyboard_user.py + @$(MAKE) ARDUINO=${ARDUINO} micropython-build-teensy3.1 + +flash-teensy-3.1: lint devdeps micropython-deps micropython-freeze-kmk-teensy3.1 @echo "===> Preparing keyboard script for bundling into MicroPython" @cp -av ${BOARD} vendor/micropython/ports/teensy/freeze/kmk_keyboard_user.py @$(MAKE) ARDUINO=${ARDUINO} micropython-flash-teensy3.1 @@ -127,8 +153,16 @@ endif ifndef BOARD build-pyboard: @echo "===> Must provide a board (usually from boards/...) to build!" + +flash-pyboard: + @echo "===> Must provide a board (usually from boards/...) to build!" else build-pyboard: lint devdeps micropython-deps micropython-freeze-kmk-stm32 + @echo "===> Preparing keyboard script for bundling into MicroPython" + @cp -av ${BOARD} vendor/micropython/ports/stm32/freeze/kmk_keyboard_user.py + @$(MAKE) AMPY_PORT=/dev/ttyACM0 AMPY_BAUD=115200 micropython-build-pyboard + +flash-pyboard: lint devdeps micropython-deps micropython-freeze-kmk-stm32 @echo "===> Preparing keyboard script for bundling into MicroPython" @cp -av ${BOARD} vendor/micropython/ports/stm32/freeze/kmk_keyboard_user.py @$(MAKE) AMPY_PORT=/dev/ttyACM0 AMPY_BAUD=115200 micropython-flash-pyboard micropython-flash-pyboard-entrypoint