Skip to content

Commit d724211

Browse files
authored
Build workflow (#56)
* Write initial workflow * Fix action * Add dwm1001 and artifacting * Fix artifact stuff * Trying this shit bc github workflows are shit * fix artifact name * Add archives for binaries only * Change when the workflow runs * Add release stuff
1 parent 2622104 commit d724211

1 file changed

Lines changed: 136 additions & 0 deletions

File tree

Lines changed: 136 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,136 @@
1+
name: Firmware Build
2+
on:
3+
push:
4+
tags:
5+
- 'v*'
6+
7+
permissions:
8+
contents: write
9+
10+
env:
11+
NCS_VERSION: v2.9.0
12+
13+
jobs:
14+
build:
15+
name: "Firmware Build"
16+
runs-on: ubuntu-22.04
17+
18+
steps:
19+
- name: checkout
20+
uses: actions/checkout@v5
21+
with:
22+
path: beluga
23+
24+
- name: Get Git SHA
25+
id: sha
26+
run: echo "sha=${GITHUB_SHA}" >> $GITHUB_OUTPUT
27+
28+
- name: Initialize Machine
29+
run: |
30+
sudo apt update
31+
python3 -m pip install west
32+
wget -q https://files.nordicsemi.com/artifactory/swtools/external/nrfutil/executables/x86_64-unknown-linux-gnu/nrfutil
33+
chmod +x nrfutil
34+
./nrfutil install sdk-manager
35+
36+
- name: Install toolchain
37+
run: |
38+
./nrfutil sdk-manager install ${NCS_VERSION} --install-dir $(pwd)/ncs
39+
40+
- name: Initialize toolchain
41+
run: |
42+
./nrfutil sdk-manager toolchain launch --install-dir $(pwd)/ncs --ncs-version ${NCS_VERSION} --chdir $(pwd)/ncs/${NCS_VERSION} -- west update
43+
./nrfutil sdk-manager toolchain launch --install-dir $(pwd)/ncs --ncs-version ${NCS_VERSION} --chdir $(pwd)/ncs/${NCS_VERSION} -- west zephyr-export
44+
45+
- name: Build
46+
run: |
47+
source $(pwd)/ncs/${NCS_VERSION}/zephyr/zephyr-env.sh
48+
mkdir -p raw-builds
49+
export cmd="west build --build-dir raw-builds/beluga beluga/Beluga --pristine --board beluga/nrf52840 --sysbuild -- -DEXTRA_CONF_FILE=config/beluga.conf;config/mcumgr.conf;config/usb.conf;config/DALEC.conf -DCONF_FILE=prj.conf -DEXTRA_DTC_OVERLAY_FILE=overlay/extra/usb.overlay -DDTC_OVERLAY_FILE=overlay/beluga.overlay -DCONFIG_SPEED_OPTIMIZATIONS=y -DBOARD_ROOT=$(pwd)/beluga/Beluga"
50+
./nrfutil sdk-manager toolchain launch --install-dir ./ncs --ncs-version ${NCS_VERSION} -- $cmd
51+
export cmd="west build --build-dir raw-builds/dwm1001 beluga/Beluga --pristine --board decawave_dwm1001_dev/nrf52832 --no-sysbuild -- -DCONF_FILE=prj.conf -DDTC_OVERLAY_FILE=overlay/decawave_dwm1001_dev.overlay -DCONFIG_SIZE_OPTIMIZATIONS=y"
52+
./nrfutil sdk-manager toolchain launch --install-dir ./ncs --ncs-version ${NCS_VERSION} -- $cmd
53+
54+
- name: Prepare archive
55+
run: |
56+
mkdir -p gh_artifacts
57+
zip -r beluga.zip raw-builds/beluga
58+
mv beluga.zip gh_artifacts
59+
zip -r decawave_dwm1001.zip raw-builds/dwm1001
60+
mv decawave_dwm1001.zip gh_artifacts
61+
62+
- name: Archive Builds
63+
uses: actions/upload-artifact@v4
64+
with:
65+
name: full-firmware-builds-${{ steps.sha.outputs.sha }}
66+
path: gh_artifacts
67+
68+
- name: Prepare Binary Archives
69+
run: |
70+
mkdir -p beluga-bin
71+
mkdir -p beluga-bin/full-images
72+
mkdir -p beluga-bin/update-images
73+
cp raw-builds/beluga/merged.hex beluga-bin/full-images/beluga.hex
74+
cp raw-builds/beluga/Beluga/zephyr/zephyr.hex beluga-bin/update-images/beluga-app.hex
75+
cp raw-builds/beluga/Beluga/zephyr/zephyr.signed.hex beluga-bin/update-images/beluga-app.signed.hex
76+
cp raw-builds/beluga/Beluga/zephyr/zephyr.bin beluga-bin/update-images/beluga-app.bin
77+
cp raw-builds/beluga/Beluga/zephyr/zephyr.signed.bin beluga-bin/update-images/beluga-app.signed.bin
78+
cp raw-builds/beluga/Beluga/zephyr/zephyr.elf beluga-bin/update-images/beluga.elf
79+
80+
mkdir -p dwm1001-bin
81+
cp raw-builds/dwm1001/zephyr/zephyr.hex dwm1001-bin/beluga-app.hex
82+
cp raw-builds/dwm1001/zephyr/zephyr.bin dwm1001-bin/beluga-app.bin
83+
cp raw-builds/dwm1001/zephyr/zephyr.elf dwm1001-bin/beluga-app.elf
84+
85+
- name: Archive Binaries (Beluga)
86+
uses: actions/upload-artifact@v4
87+
with:
88+
name: beluga-fw-${{ steps.sha.outputs.sha }}
89+
path: beluga-bin
90+
91+
- name: Archive Binaries (dwm1001)
92+
uses: actions/upload-artifact@v4
93+
with:
94+
name: dwm1001-fw-${{ steps.sha.outputs.sha }}
95+
path: dwm1001-bin
96+
97+
release-assets:
98+
needs: build
99+
runs-on: ubuntu-22.04
100+
101+
steps:
102+
- name: Get Git SHA
103+
id: sha
104+
run: echo "sha=${GITHUB_SHA}" >> $GITHUB_OUTPUT
105+
106+
- name: Download Binaries (Beluga)
107+
uses: actions/download-artifact@v4
108+
with:
109+
name: beluga-fw-${{ steps.sha.outputs.sha }}
110+
path: beluga-fw
111+
112+
- name: Download Binaries (dwm1001)
113+
uses: actions/download-artifact@v4
114+
with:
115+
name: dwm1001-fw-${{ steps.sha.outputs.sha }}
116+
path: dwm1001-fw
117+
118+
- name: Prepare Assets
119+
run: |
120+
tar -czf beluga-fw.tar.gz beluga-fw/
121+
zip -rq beluga-fw.zip beluga-fw/
122+
tar -czf dwm1001-fw.tar.gz dwm1001-fw/
123+
zip -rq dwm1001-fw.zip dwm1001-fw/
124+
125+
- name: Publish
126+
uses: softprops/action-gh-release@v2
127+
with:
128+
tag_name: ${{ github.ref_name }}
129+
name: Release ${{ github.ref_name }}
130+
draft: false
131+
prerelease: true
132+
files: |
133+
beluga-fw.tar.gz
134+
beluga-fw.zip
135+
dwm1001-fw.tar.gz
136+
dwm1001-fw.zip

0 commit comments

Comments
 (0)