Skip to content

Update SDK and Github Actions #195

Update SDK and Github Actions

Update SDK and Github Actions #195

Workflow file for this run

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 }}