-
Notifications
You must be signed in to change notification settings - Fork 59
148 lines (134 loc) · 6.46 KB
/
workflow.yml
File metadata and controls
148 lines (134 loc) · 6.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
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 }}