Update SDK and Github Actions #195
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| on: | |
| pull_request: | |
| branches: | |
| - main | |
| push: | |
| branches: | |
| - main | |
| create: | |
| workflow_dispatch: | |
| # Allow one concurrent deployment | |
| concurrency: | |
| group: ${{ github.ref }} | |
| cancel-in-progress: true | |
| permissions: write-all | |
| jobs: | |
| build: | |
| continue-on-error: true | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| boards: [ | |
| {boardname: "promicro_uf2/nrf52840/i2c", fileformat: "uf2", filename: "SlimeNRF_ProMicro_I2C_Tracker"}, | |
| {boardname: "promicro_uf2/nrf52840/spi", fileformat: "uf2", filename: "SlimeNRF_ProMicro_SPI_Tracker"}, | |
| {boardname: "promicro_uf2/nrf52840/smspi", fileformat: "uf2", filename: "SlimeNRF_ProMicro_smSPI_Tracker"}, | |
| {boardname: "promicro_uf2/nrf52840/chrysalis", fileformat: "uf2", filename: "SlimeNRF_ProMicro_Chrysalis_Tracker"}, | |
| {boardname: "xiao_ble/nrf52840", fileformat: "uf2", filename: "SlimeNRF_XIAO_Tracker"}, | |
| {boardname: "xiao_ble/nrf52840/sense", fileformat: "uf2", filename: "SlimeNRF_XIAO_Sense_Tracker"}, | |
| {boardname: "slimenrf_r1/nrf52840", fileformat: "hex", filename: "SlimeNRF_slimenrf_r1_Tracker"}, | |
| {boardname: "slimenrf_r2/nrf52832", fileformat: "hex", filename: "SlimeNRF_slimenrf_r2_Tracker"}, | |
| {boardname: "slimenrf_r3/nrf52840/uf2", fileformat: "uf2", filename: "SlimeNRF_slimenrf_r3_Tracker"}, | |
| {boardname: "slimevrmini_p1_uf2/nrf52833", fileformat: "uf2", filename: "SlimeNRF_slimevrmini_p1_Tracker"}, | |
| {boardname: "slimevrmini_p2_uf2/nrf52833", fileformat: "uf2", filename: "SlimeNRF_slimevrmini_p2_Tracker"}, | |
| {boardname: "slimevrmini_p3r6_uf2/nrf52833", fileformat: "uf2", filename: "SlimeNRF_slimevrmini_p3_r6_Tracker"}, | |
| {boardname: "slimevrmini_p3r7_uf2/nrf52833", fileformat: "uf2", filename: "SlimeNRF_slimevrmini_p3_r7_Tracker"}, | |
| {boardname: "slimevrmini_p4_uf2/nrf52833", fileformat: "uf2", filename: "SlimeNRF_slimevrmini_p4r8_Tracker"}, | |
| {boardname: "slimevrmini_p4r9_uf2/nrf52833", fileformat: "uf2", filename: "SlimeNRF_slimevrmini_p4r9_Tracker"}, | |
| {boardname: "nrf52dk/nrf52832", fileformat: "hex", filename: "SlimeNRF_nRF52dk_Tracker"}, | |
| {boardname: "nrf52840dk/nrf52840", fileformat: "hex", filename: "SlimeNRF_nRF52840dk_Tracker"}, | |
| ] | |
| if: always() | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: 🧹 Clean Landing Site | |
| run: | | |
| sudo rm -rf zephyr-workspace/SlimeNRF-CI | |
| - uses: actions/checkout@v5 | |
| with: | |
| # Clone the repo to a subdirectory, so we can initialize the Zephyr | |
| # workspace in the parent directory. | |
| path: zephyr-workspace/SlimeNRF-CI | |
| - name: 🧰 Install Dependencies + West | |
| # Install the Zephyr host build dependencies, and the `west` Python tool. This list is from | |
| # https://docs.zephyrproject.org/3.6.0/develop/getting_started/index.html#install-dependencies | |
| run: | | |
| sudo apt-get update && sudo apt install --no-install-recommends \ | |
| git \ | |
| cmake \ | |
| ninja-build \ | |
| gperf \ | |
| ccache \ | |
| dfu-util \ | |
| device-tree-compiler \ | |
| wget \ | |
| python3-dev \ | |
| python3-pip \ | |
| python3-setuptools \ | |
| python3-tk \ | |
| python3-wheel \ | |
| python3-venv \ | |
| xz-utils \ | |
| file \ | |
| make \ | |
| gcc \ | |
| gcc-multilib \ | |
| g++-multilib \ | |
| libsdl2-dev \ | |
| libmagic1 | |
| python3 -m venv ~/.venv | |
| source ~/.venv/bin/activate | |
| # insert the PATH changes the venv activate made to be present for | |
| # future steps | |
| echo "PATH=$PATH" >> $GITHUB_ENV | |
| pip3 install west ninja | |
| - name: 🪁 Install Zephyr SDK | |
| # Fetch the Zephyr SDK from the GitHub Release artifact, unpack it and | |
| # run the setup script, selecting the '-c' option to install cmake | |
| # packages and the '-t arm-zephyr-eabi' option to install the toolchain | |
| # only for the arm-zephyr-eabi (Cortex-M) architecture, since we don't | |
| # need the other toolchains (xtensa, riscv, etc.) | |
| run: | | |
| wget -q https://github.com/zephyrproject-rtos/sdk-ng/releases/download/v0.17.4/zephyr-sdk-0.17.4_linux-x86_64_minimal.tar.xz | |
| tar xf zephyr-sdk-0.17.4_linux-x86_64_minimal.tar.xz -C ~/ | |
| ~/zephyr-sdk-0.17.4/setup.sh -c -t arm-zephyr-eabi | |
| - name: 📂 Cloning Triggered Repository/Branch | |
| run: | | |
| cd zephyr-workspace | |
| git clone --single-branch --recurse-submodules -b $GITHUB_REF_NAME $GITHUB_SERVER_URL/$GITHUB_REPOSITORY.git | |
| - name: ♻️ Initialize Zephyr Workspace | |
| # Set up the Zephyr workspace and install the Python dependencies | |
| run: | | |
| cd zephyr-workspace | |
| sudo rm -rf .west | |
| west init -l SlimeNRF-CI | |
| west update --narrow -o=--depth=1 | |
| west zephyr-export | |
| - name: 🐍 Install Python Dependencies | |
| run: | | |
| cd zephyr-workspace | |
| pip3 install -r zephyr/scripts/requirements.txt | |
| - name: 🔨 Build SlimeVR-Tracker-nRF - ${{ matrix.boards.boardname }} | |
| # Receiver Firmware Build | |
| if: always() | |
| run: | | |
| cd zephyr-workspace | |
| sudo rm -rf Releases | |
| mkdir Releases | |
| sudo rm -rf ${{ github.event.repository.name }}/build | |
| mkdir ${{ github.event.repository.name }}/build | |
| west build \ | |
| --board ${{ matrix.boards.boardname }} \ | |
| --pristine=always ${{ github.event.repository.name }} \ | |
| --build-dir ${{ github.event.repository.name }}/build \ | |
| -- \ | |
| -DNCS_TOOLCHAIN_VERSION=NONE \ | |
| -DBOARD_ROOT=../${{ github.event.repository.name }} | |
| mv ${{ github.event.repository.name }}/build/${{ github.event.repository.name }}/zephyr/zephyr.${{ matrix.boards.fileformat }} Releases/${{ matrix.boards.filename }}.${{ matrix.boards.fileformat }} | |
| - name: 💾 Upload Artifact - ${{ matrix.boards.boardname }} | |
| if: always() | |
| uses: actions/upload-artifact@v5 | |
| with: | |
| # Artifact name | |
| name: ${{ matrix.boards.filename }}.${{ matrix.boards.fileformat }} | |
| # A file, directory or wildcard pattern that describes what to upload | |
| path: zephyr-workspace/Releases/${{ matrix.boards.filename }}.${{ matrix.boards.fileformat }} |