Skip to content

Commit c9b4f83

Browse files
committed
Re-work github action
1 parent 620f9f1 commit c9b4f83

1 file changed

Lines changed: 138 additions & 109 deletions

File tree

.github/workflows/build.yml

Lines changed: 138 additions & 109 deletions
Original file line numberDiff line numberDiff line change
@@ -1,164 +1,193 @@
11
name: Build and Release
22

33
on:
4-
workflow_dispatch:
54
push:
6-
branches:
7-
- main
8-
paths:
9-
- "bootloader/**"
10-
- "firmware/**"
11-
tags:
12-
- "v*"
13-
14-
env:
15-
REPO_PATH: ${{ github.workspace }}/wavephoenix
16-
BOOTLOADER_PATH: ${{ github.workspace }}/wavephoenix/bootloader
17-
FIRMWARE_PATH: ${{ github.workspace }}/wavephoenix/firmware
18-
GECKO_SDK_PATH: ${{ github.workspace }}/gecko_sdk
19-
SIMPLICITY_COMMANDER_PATH: ${{ github.workspace }}/commander
20-
SLC_CLI_PATH: ${{ github.workspace }}/slc_cli
21-
ARM_TOOLCHAIN_PATH: ${{ github.workspace }}/arm-toolchain
22-
GECKO_SDK_VERSION: v4.4.5
23-
ARM_GNU_TOOLCHAIN_VERSION: 12.2.rel1
5+
branches: [main]
6+
tags: ["v*"]
7+
paths: ["bootloader/**", "firmware/**"]
8+
pull_request:
9+
branches: [main]
10+
workflow_dispatch:
2411

2512
jobs:
2613
build:
2714
runs-on: ubuntu-latest
15+
16+
env:
17+
ARM_GNU_TOOLCHAIN_VERSION: 13.3.rel1
18+
SIMPLICITY_SDK_VERSION: v2025.6.2
19+
2820
strategy:
2921
matrix:
3022
board:
3123
- efr32xg22e
3224
- rf-bm-bg22c3
3325
steps:
26+
- name: Checkout repository
27+
uses: actions/checkout@v6
28+
29+
# Set up dependencies
3430
- name: Install build dependencies
3531
run: |
36-
export DEBIAN_FRONTEND=noninteractive
3732
sudo apt-get update
38-
sudo apt-get -o Dpkg::Options::="--path-exclude=/usr/share/man/*" -o Dpkg::Options::="--path-exclude=/usr/share/doc/*" -o Dpkg::Options::="--path-exclude=/usr/share/locale*" install -y cmake ninja-build
39-
40-
- name: Set up Python
41-
uses: actions/setup-python@v5
42-
with:
43-
python-version: "3.10"
44-
45-
- name: Install Python packages
46-
run: pip install jinja2 pyyaml numpy scipy
33+
sudo apt-get install -y cmake ninja-build unzip wget
4734
4835
- name: Set up Java
4936
uses: actions/setup-java@v4
5037
with:
5138
distribution: "corretto"
5239
java-version: "21"
5340

41+
# Setup ARM GNU Toolchain
5442
- name: Cache ARM GNU Toolchain
5543
id: cache-arm-toolchain
5644
uses: actions/cache@v4
5745
with:
58-
path: ${{ env.ARM_TOOLCHAIN_PATH }}
46+
path: arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi
5947
key: arm-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}
6048

6149
- name: Install ARM GNU Toolchain
6250
if: steps.cache-arm-toolchain.outputs.cache-hit != 'true'
6351
run: |
64-
mkdir -p ${{ env.ARM_TOOLCHAIN_PATH }}
65-
curl -L "https://developer.arm.com/-/media/Files/downloads/gnu/${{ env.ARM_GNU_TOOLCHAIN_VERSION }}/binrel/arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi.tar.xz" | tar -xJ -C "${{ env.ARM_TOOLCHAIN_PATH }}" --strip-components=1
66-
67-
- name: Add ARM GNU Toolchain to PATH
68-
run: echo "${{ env.ARM_TOOLCHAIN_PATH }}/bin" >> $GITHUB_PATH
52+
wget -q https://developer.arm.com/-/media/Files/downloads/gnu/${{ env.ARM_GNU_TOOLCHAIN_VERSION }}/binrel/arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi.tar.xz
53+
tar xf arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi.tar.xz
6954
70-
- name: Checkout repository
71-
uses: actions/checkout@v4
55+
# Setup Simplicity SDK
56+
- name: Cache Simplicity SDK
57+
id: cache-simplicity-sdk
58+
uses: actions/cache@v4
7259
with:
73-
path: ${{ env.REPO_PATH }}
60+
path: simplicity_sdk
61+
key: simplicity-sdk-${{ env.SIMPLICITY_SDK_VERSION }}
7462

75-
- name: Cache Gecko SDK
76-
id: cache-gecko-sdk
63+
- name: Install Simplicity SDK
64+
if: steps.cache-simplicity-sdk.outputs.cache-hit != 'true'
65+
run: |
66+
wget -q https://github.com/SiliconLabs/simplicity_sdk/releases/download/${{ env.SIMPLICITY_SDK_VERSION }}/simplicity-sdk.zip
67+
unzip -q simplicity-sdk.zip -d simplicity_sdk
68+
69+
# Setup SLC-CLI
70+
- name: Cache SLC-CLI
71+
id: cache-slc-cli
7772
uses: actions/cache@v4
7873
with:
79-
path: ${{ env.GECKO_SDK_PATH }}
80-
key: gecko-sdk-${{ env.GECKO_SDK_VERSION }}
74+
path: slc_cli
75+
key: slc-cli-${{ runner.os }}
76+
restore-keys: |
77+
slc-cli-${{ runner.os }}-
78+
79+
- name: Install SLC-CLI
80+
if: steps.cache-slc-cli.outputs.cache-hit != 'true'
81+
run: |
82+
wget -q https://www.silabs.com/documents/login/software/slc_cli_linux.zip
83+
unzip -q slc_cli_linux.zip
84+
chmod +x slc_cli/slc
85+
86+
- name: Add SLC-CLI to PATH
87+
run: |
88+
echo "$PWD/slc_cli" >> $GITHUB_PATH
8189
82-
- name: Download Gecko SDK
83-
if: steps.cache-gecko-sdk.outputs.cache-hit != 'true'
90+
- name: Configure SLC-CLI
8491
run: |
85-
wget -nv https://github.com/SiliconLabs/gecko_sdk/releases/download/${{ env.GECKO_SDK_VERSION }}/gecko-sdk.zip
86-
unzip -q gecko-sdk.zip -d ${{ env.GECKO_SDK_PATH }}
92+
slc configuration --sdk simplicity_sdk
93+
slc configuration --gcc-toolchain arm-gnu-toolchain-${{ env.ARM_GNU_TOOLCHAIN_VERSION }}-x86_64-arm-none-eabi
94+
slc signature trust --sdk simplicity_sdk
95+
96+
# Setup Simplicity Commander
97+
- name: Cache Simplicity Commander
98+
id: cache-simplicity-commander
99+
uses: actions/cache@v4
100+
with:
101+
path: commander
102+
key: simplicity-commander-${{ runner.os }}
103+
restore-keys: |
104+
simplicity-commander-${{ runner.os }}-
87105
88-
- name: "Download Simplicity Commander"
106+
- name: Install Simplicity Commander
107+
if: steps.cache-simplicity-commander.outputs.cache-hit != 'true'
89108
run: |
90-
wget -nv https://www.silabs.com/documents/login/software/SimplicityCommander-Linux.zip
109+
wget -q https://www.silabs.com/documents/login/software/SimplicityCommander-Linux.zip
91110
unzip -q SimplicityCommander-Linux.zip
92111
tar -xf SimplicityCommander-Linux/Commander_linux_x86_64_*.tar.bz
93112
94-
- name: Download SLC-CLI
113+
- name: Add Simplicity Commander to PATH
95114
run: |
96-
wget -nv https://www.silabs.com/documents/login/software/slc_cli_linux.zip
97-
unzip -q slc_cli_linux.zip
115+
echo "$PWD/commander" >> $GITHUB_PATH
98116
99-
- name: Build bootloader
117+
# Build bootloader
118+
- name: Generate bootloader project files
119+
working-directory: bootloader
100120
run: |
101-
export ARM_GCC_DIR="${{ env.ARM_TOOLCHAIN_PATH }}"
102-
103-
cd ${{ env.BOOTLOADER_PATH }}
104-
${{ env.SLC_CLI_PATH }}/slc signature trust --sdk ${{ env.GECKO_SDK_PATH }}
105-
${{ env.SLC_CLI_PATH }}/slc generate -s ${{ env.GECKO_SDK_PATH }} -p bootloader-${{ matrix.board }}.slcp -d bootloader_project -o cmake
121+
slc generate bootloader-${{ matrix.board }}.slcp \
122+
-o cmake \
123+
-d target/${{ matrix.board }}
106124
107-
cd bootloader_project/bootloader_cmake
125+
- name: Build bootloader
126+
working-directory: bootloader/target/${{ matrix.board }}/bootloader_cmake
127+
run: |
108128
cmake --workflow --preset project
109-
cmake --preset project && cmake --build --preset default_config
110129
111-
- name: Build firmware
130+
# Build firmware
131+
- name: Generate firmware project files
132+
working-directory: firmware
112133
run: |
113-
cd ${{ env.FIRMWARE_PATH }}
114-
cmake --preset ${{ matrix.board }} && cmake --build --preset ${{ matrix.board }}
134+
slc generate wavephoenix.slcp \
135+
--with "${{ matrix.board }};wavephoenix" \
136+
--sdk-extensions=.,libjoybus,libwavebird \
137+
-o cmake \
138+
-d target/${{ matrix.board }}
115139
116-
- name: Update trunk tag
117-
if: github.ref == 'refs/heads/main'
140+
- name: Build firmware
141+
working-directory: firmware/target/${{ matrix.board }}/wavephoenix_cmake
118142
run: |
119-
cd ${{ env.REPO_PATH }}
120-
git tag -f trunk
121-
git push -f origin trunk
122-
env:
123-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
143+
cmake --workflow --preset project
124144
125-
- name: Rename artifacts
126-
run: |
127-
if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
128-
VERSION=${GITHUB_REF_NAME}
129-
else
130-
VERSION="trunk"
131-
fi
132-
133-
mv ${{ env.BOOTLOADER_PATH }}/bootloader_project/bootloader_cmake/build/default_config/bootloader.hex "wavephoenix-bootloader-${VERSION}-${{ matrix.board }}.hex"
134-
mv ${{ env.FIRMWARE_PATH }}/build/${{ matrix.board }}/receiver/receiver.hex "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.hex"
135-
mv ${{ env.FIRMWARE_PATH }}/build/${{ matrix.board }}/receiver/receiver.gbl "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.gbl"
136-
137-
- name: Upload artifacts to trunk release
138-
if: github.ref == 'refs/heads/main'
139-
uses: softprops/action-gh-release@v2
140-
with:
141-
files: |
142-
wavephoenix-bootloader-*.hex
143-
wavephoenix-receiver-*.hex
144-
wavephoenix-receiver-*.gbl
145-
tag_name: trunk
146-
name: Trunk Builds
147-
body: Automated build from main branch, not guaranteed to be stable.
148-
prerelease: true
149-
env:
150-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
151-
152-
- name: Upload artifacts to tagged release
153-
if: startsWith(github.ref, 'refs/tags/')
154-
uses: softprops/action-gh-release@v2
155-
with:
156-
files: |
157-
wavephoenix-bootloader-*.hex
158-
wavephoenix-receiver-*.hex
159-
wavephoenix-receiver-*.gbl
160-
tag_name: ${{ github.ref }}
161-
name: ${{ github.ref_name }}
162-
draft: true
163-
env:
164-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
145+
# - name: Update trunk tag
146+
# if: github.ref == 'refs/heads/main'
147+
# run: |
148+
# cd ${{ env.REPO_PATH }}
149+
# git tag -f trunk
150+
# git push -f origin trunk
151+
# env:
152+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
153+
154+
# - name: Rename artifacts
155+
# run: |
156+
# if [[ "${GITHUB_REF}" == refs/tags/* ]]; then
157+
# VERSION=${GITHUB_REF_NAME}
158+
# else
159+
# VERSION="trunk"
160+
# fi
161+
162+
# mv ${{ env.BOOTLOADER_PATH }}/bootloader_project/bootloader_cmake/build/default_config/bootloader.hex "wavephoenix-bootloader-${VERSION}-${{ matrix.board }}.hex"
163+
# mv ${{ env.FIRMWARE_PATH }}/build/${{ matrix.board }}/receiver/receiver.hex "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.hex"
164+
# mv ${{ env.FIRMWARE_PATH }}/build/${{ matrix.board }}/receiver/receiver.gbl "wavephoenix-receiver-${VERSION}-${{ matrix.board }}.gbl"
165+
166+
# - name: Upload artifacts to trunk release
167+
# if: github.ref == 'refs/heads/main'
168+
# uses: softprops/action-gh-release@v2
169+
# with:
170+
# files: |
171+
# wavephoenix-bootloader-*.hex
172+
# wavephoenix-receiver-*.hex
173+
# wavephoenix-receiver-*.gbl
174+
# tag_name: trunk
175+
# name: Trunk Builds
176+
# body: Automated build from main branch, not guaranteed to be stable.
177+
# prerelease: true
178+
# env:
179+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
180+
181+
# - name: Upload artifacts to tagged release
182+
# if: startsWith(github.ref, 'refs/tags/')
183+
# uses: softprops/action-gh-release@v2
184+
# with:
185+
# files: |
186+
# wavephoenix-bootloader-*.hex
187+
# wavephoenix-receiver-*.hex
188+
# wavephoenix-receiver-*.gbl
189+
# tag_name: ${{ github.ref }}
190+
# name: ${{ github.ref_name }}
191+
# draft: true
192+
# env:
193+
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

0 commit comments

Comments
 (0)