diff --git a/.github/actions/west/Dockerfile b/.github/actions/west/Dockerfile new file mode 100644 index 00000000..687ba1e2 --- /dev/null +++ b/.github/actions/west/Dockerfile @@ -0,0 +1,57 @@ +FROM debian:stable-slim + +RUN apt-get -y update && \ + apt-get -y upgrade && \ + apt-get install --no-install-recommends -y \ + wget \ + ca-certificates \ + autoconf \ + automake \ + build-essential \ + ccache \ + device-tree-compiler \ + dfu-util \ + file \ + g++ \ + gcc \ + gcc-multilib \ + git \ + iproute2 \ + libpcap-dev \ + libtool \ + make \ + ninja-build \ + python3-dev \ + python3-pip \ + python3-setuptools \ + xz-utils && \ + rm -rf /var/lib/apt/lists/* + +ARG ZSDK_VERSION=0.11.2 +RUN wget -q "https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v${ZSDK_VERSION}/zephyr-toolchain-arm-${ZSDK_VERSION}-setup.run" && \ + sh "zephyr-toolchain-arm-${ZSDK_VERSION}-setup.run" --quiet -- -d /opt/toolchains/zephyr-sdk-${ZSDK_VERSION} && \ + rm "zephyr-toolchain-arm-${ZSDK_VERSION}-setup.run" + +ARG CMAKE_VERSION=3.16.2 +RUN wget -q https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \ + chmod +x cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \ + ./cmake-${CMAKE_VERSION}-Linux-x86_64.sh --skip-license --prefix=/usr/local && \ + rm -f ./cmake-${CMAKE_VERSION}-Linux-x86_64.sh + +ENV DEBIAN_FRONTEND noninteractive + +RUN wget -q https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/master/scripts/requirements.txt && \ + wget -q https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/master/scripts/requirements-base.txt && \ + wget -q https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/master/scripts/requirements-build-test.txt && \ + wget -q https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/master/scripts/requirements-doc.txt && \ + wget -q https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/master/scripts/requirements-run-test.txt && \ + wget -q https://raw.githubusercontent.com/zephyrproject-rtos/zephyr/master/scripts/requirements-extras.txt && \ + pip3 install wheel && \ + pip3 install -r requirements.txt && \ + pip3 install west && \ + pip3 install sh + +ENV ZEPHYR_TOOLCHAIN_VARIANT=zephyr +ENV ZEPHYR_SDK_INSTALL_DIR=/opt/toolchains/zephyr-sdk-${ZSDK_VERSION} + +ENTRYPOINT ["west"] diff --git a/.github/actions/west/action.yml b/.github/actions/west/action.yml new file mode 100644 index 00000000..2498f741 --- /dev/null +++ b/.github/actions/west/action.yml @@ -0,0 +1,16 @@ +name: "Zephyr West" +description: 'Action incorporating Zephyr dependencies and West build tool' +inputs: + command: # id of input + description: 'Which west command to execute' + required: true + default: 'build' + command-args: # id of input + description: 'Extra arguments for the west command' + required: false +runs: + using: 'docker' + image: 'Dockerfile' + args: + - ${{ inputs.command }} + - ${{ inputs.command-args }} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..d7c9b979 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,39 @@ +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + name: Basic build of the ZMK firmware + steps: + # To use this repository's private action, + # you must check out the repository + - name: Checkout + uses: actions/checkout@v2 + - name: West Init + uses: ./.github/actions/zephyr-west # Uses an action in the root directory + id: west-init + with: + command: 'init' + command-args: '-l .' + - name: West Update + uses: ./.github/actions/zephyr-west # Uses an action in the root directory + id: west-update + with: + command: 'update' + - name: West Config Zephyr Base + uses: ./.github/actions/zephyr-west # Uses an action in the root directory + id: west-config + with: + command: 'config' + command-args: '--global zephyr.base-prefer configfile' + - name: West Zephyr Export + uses: ./.github/actions/zephyr-west # Uses an action in the root directory + id: west-zephyr-export + with: + command: 'zephyr-export' + - name: West Build + uses: ./.github/actions/zephyr-west # Uses an action in the root directory + id: west-zephyr-export + with: + command: 'build' + command-args: '-b nucleo_wb55rg -- -DSHIELD=petejohanson_handwire'