Skip to content

Commit e966265

Browse files
committed
CI build for classic and pro variant
1 parent e9eab2a commit e966265

File tree

3 files changed

+150
-29
lines changed

3 files changed

+150
-29
lines changed

.github/workflows/ci.yml

Lines changed: 138 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,13 @@ jobs:
9797
run: |
9898
mkdir sonarqube-out
9999
./sonarqube/build-wrapper-linux-x86/build-wrapper-linux-x86-64 --out-dir sonarqube-out \
100-
platformio ci --build-dir="./bin" --keep-build-dir --project-conf=platformio.ini ./src/
100+
platformio ci --environment obspro --environment obs --build-dir ./bin --keep-build-dir --project-conf platformio.ini ./src/
101101
102-
- name: Package firmware
102+
- name: Package firmware OBS classic
103103
run: |
104104
set -eux
105+
mkdir -p obs-classic
106+
cd obs-classic
105107
if [ -f "/github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf" ]; then
106108
cp /github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf 0x01000.elf
107109
elif [ -f "/github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/bin/bootloader_dio_40m.bin" ]; then
@@ -112,10 +114,10 @@ jobs:
112114
find /github/home/.platformio/ -name "bootloader*.elf"
113115
exit 1
114116
fi
115-
cp bin/.pio/build/esp32dev/partitions.bin 0x08000.bin
117+
cp ../bin/.pio/build/obs/partitions.bin 0x08000.bin
116118
cp /github/home/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin 0x0e000.bin
117-
cp bin/.pio/build/esp32dev/firmware.bin 0x10000.bin
118-
cp bin/.pio/build/esp32dev/firmware.bin firmware.bin
119+
cp ../bin/.pio/build/obs/firmware.bin 0x10000.bin
120+
cp ../bin/.pio/build/obs/firmware.bin firmware.bin
119121
ESPTOOL=/github/home/.platformio/packages/tool-esptoolpy/esptool.py
120122
chmod +x ${ESPTOOL}
121123
# CMD to create a merged binary (still missing flash.app)
@@ -138,16 +140,73 @@ jobs:
138140
0x01000 0x01000.bin.org
139141
echo OpenBikeSensor bootloader params
140142
${ESPTOOL} --chip esp32 image_info --version 2 0x01000.bin || echo image_info failed
141-
cp src/fonts/LICENSE.txt LICENSE-OpenSans.txt
143+
cp ../src/fonts/LICENSE.txt LICENSE-OpenSans.txt
142144
wget --no-verbose -O COPYRIGHT-ESP.html https://docs.espressif.com/projects/esp-idf/en/latest/esp32/COPYRIGHT.html
143145
wget --no-verbose -O LICENSE-ARDUINO-ESP32.md https://github.com/espressif/arduino-esp32/raw/master/LICENSE.md
144-
zip --junk-paths obs-${{ env.OBS_VERSION }}-initial-flash.zip \
146+
zip --junk-paths ../obs-${{ env.OBS_VERSION }}-initial-flash.zip \
145147
0x*.bin \
146148
COPYRIGHT-ESP.html \
147149
LICENSE-ARDUINO-ESP32.md \
148150
LICENSE-OpenSans.txt \
149151
LICENSE
150-
zip --junk-paths obs-${{ env.OBS_VERSION }}.zip \
152+
zip --junk-paths ../obs-${{ env.OBS_VERSION }}.zip \
153+
firmware.bin \
154+
COPYRIGHT-ESP.html \
155+
LICENSE-ARDUINO-ESP32.md \
156+
LICENSE-OpenSans.txt \
157+
LICENSE
158+
159+
- name: Package firmware OBS pro
160+
run: |
161+
set -eux
162+
mkdir -p obs-pro
163+
cd obs-pro
164+
if [ -f "/github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf" ]; then
165+
cp /github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/esp32/bin/bootloader_dio_40m.elf 0x01000.elf
166+
elif [ -f "/github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/bin/bootloader_dio_40m.bin" ]; then
167+
cp /github/home/.platformio/packages/framework-arduinoespressif32/tools/sdk/bin/bootloader_dio_40m.bin 0x01000.bin
168+
else
169+
echo could not find bootloader_dio_40m.bin, new location?
170+
find /github/home/.platformio/ -name "bootloader*.bin"
171+
find /github/home/.platformio/ -name "bootloader*.elf"
172+
exit 1
173+
fi
174+
cp ../bin/.pio/build/obspro/partitions.bin 0x08000.bin
175+
cp /github/home/.platformio/packages/framework-arduinoespressif32/tools/partitions/boot_app0.bin 0x0e000.bin
176+
cp ../bin/.pio/build/obspro/firmware.bin 0x10000.bin
177+
cp ../bin/.pio/build/obspro/firmware.bin firmware.bin
178+
ESPTOOL=/github/home/.platformio/packages/tool-esptoolpy/esptool.py
179+
chmod +x ${ESPTOOL}
180+
# CMD to create a merged binary (still missing flash.app)
181+
# ${ESPTOOL} --trace --chip esp32 merge_bin --output merged.bin \
182+
# --flash_freq keep --flash_mode dio --flash_size 4MB \
183+
# 0x01000 0x01000.bin \
184+
# 0x08000 0x08000.bin \
185+
# 0x0e000 0x0e000.bin \
186+
# 0x10000 0x10000.bin
187+
${ESPTOOL} --trace --chip esp32 elf2image \
188+
--dont-append-digest \
189+
--flash_freq 40m --flash_mode dio \
190+
0x01000.elf
191+
echo Original bootloader params after elf2image
192+
${ESPTOOL} --chip esp32 image_info --version 2 0x01000.bin || echo image_info for converted bootloader failed
193+
mv 0x01000.bin 0x01000.bin.org
194+
${ESPTOOL} --trace --chip esp32 merge_bin --output 0x01000.bin \
195+
--flash_freq 40m --flash_mode dio --flash_size 4MB \
196+
--target-offset 0x01000 \
197+
0x01000 0x01000.bin.org
198+
echo OpenBikeSensor bootloader params
199+
${ESPTOOL} --chip esp32 image_info --version 2 0x01000.bin || echo image_info failed
200+
cp ../src/fonts/LICENSE.txt LICENSE-OpenSans.txt
201+
wget --no-verbose -O COPYRIGHT-ESP.html https://docs.espressif.com/projects/esp-idf/en/latest/esp32/COPYRIGHT.html
202+
wget --no-verbose -O LICENSE-ARDUINO-ESP32.md https://github.com/espressif/arduino-esp32/raw/master/LICENSE.md
203+
zip --junk-paths ../obspro-${{ env.OBS_VERSION }}-initial-flash.zip \
204+
0x*.bin \
205+
COPYRIGHT-ESP.html \
206+
LICENSE-ARDUINO-ESP32.md \
207+
LICENSE-OpenSans.txt \
208+
LICENSE
209+
zip --junk-paths ../obspro-${{ env.OBS_VERSION }}.zip \
151210
firmware.bin \
152211
COPYRIGHT-ESP.html \
153212
LICENSE-ARDUINO-ESP32.md \
@@ -186,26 +245,50 @@ jobs:
186245
with:
187246
name: obs-${{ env.OBS_VERSION }}
188247
path: |
189-
firmware.bin
190-
COPYRIGHT-ESP.html
191-
LICENSE-ARDUINO-ESP32.md
192-
LICENSE-OpenSans.txt
193-
LICENSE
248+
obs-classic/firmware.bin
249+
obs-classic/COPYRIGHT-ESP.html
250+
obs-classic/LICENSE-ARDUINO-ESP32.md
251+
obs-classic/LICENSE-OpenSans.txt
252+
obs-classic/LICENSE
194253
if-no-files-found: error
195254

196255
- name: Upload Build Asset Initial Flash
197256
uses: actions/upload-artifact@v4
198257
with:
199258
name: obs-${{ env.OBS_VERSION }}-initial-flash
200259
path: |
201-
0x*.bin
202-
COPYRIGHT-ESP.html
203-
LICENSE-ARDUINO-ESP32.md
204-
LICENSE-OpenSans.txt
205-
LICENSE
260+
obs-classic/0x*.bin
261+
obs-classic/COPYRIGHT-ESP.html
262+
obs-classic/LICENSE-ARDUINO-ESP32.md
263+
obs-classic/LICENSE-OpenSans.txt
264+
obs-classic/LICENSE
206265
sonarqube-out/build-wrapper-dump.json
207266
if-no-files-found: error
208267

268+
- name: Upload Build Asset obspro
269+
uses: actions/upload-artifact@v4
270+
with:
271+
name: obspro-${{ env.OBS_VERSION }}
272+
path: |
273+
obs-pro/firmware.bin
274+
obs-pro/COPYRIGHT-ESP.html
275+
obs-pro/LICENSE-ARDUINO-ESP32.md
276+
obs-pro/LICENSE-OpenSans.txt
277+
obs-pro/LICENSE
278+
if-no-files-found: error
279+
280+
- name: Upload Build Asset Initial Flash obspro
281+
uses: actions/upload-artifact@v4
282+
with:
283+
name: obspro-${{ env.OBS_VERSION }}-initial-flash
284+
path: |
285+
obs-pro/0x*.bin
286+
obs-pro/COPYRIGHT-ESP.html
287+
obs-pro/LICENSE-ARDUINO-ESP32.md
288+
obs-pro/LICENSE-OpenSans.txt
289+
obs-pro/LICENSE
290+
if-no-files-found: error
291+
209292
- name: Generate changelog
210293
id: changelog
211294
if: ${{ env.OBS_PREPARE_RELEASE == 'true' }}
@@ -275,6 +358,42 @@ jobs:
275358
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
276359
with:
277360
upload_url: ${{ steps.create_release.outputs.upload_url }}
278-
asset_path: ./bin/.pio/build/esp32dev/firmware.bin
361+
asset_path: ./bin/.pio/build/obs/firmware.bin
279362
asset_name: firmware.bin
280363
asset_content_type: application/x-esp32
364+
365+
- name: Upload Release Asset obspro
366+
id: upload-release-asset
367+
if: ${{ env.OBS_PREPARE_RELEASE == 'true' }}
368+
uses: actions/upload-release-asset@v1
369+
env:
370+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
371+
with:
372+
upload_url: ${{ steps.create_release.outputs.upload_url }}
373+
asset_path: ./obspro-${{ env.OBS_VERSION }}.zip
374+
asset_name: obspro-${{ env.OBS_VERSION }}.zip
375+
asset_content_type: application/zip
376+
377+
- name: Upload Release Asset Initial Flash pro
378+
id: upload-release-asset-initial-flash
379+
if: ${{ env.OBS_PREPARE_RELEASE == 'true' }}
380+
uses: actions/upload-release-asset@v1
381+
env:
382+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
383+
with:
384+
upload_url: ${{ steps.create_release.outputs.upload_url }}
385+
asset_path: ./obspro-${{ env.OBS_VERSION }}-initial-flash.zip
386+
asset_name: obspro-${{ env.OBS_VERSION }}-initial-flash.zip
387+
asset_content_type: application/zip
388+
389+
- name: Upload Release Asset app bin pro
390+
id: upload-release-asset-app-bin
391+
if: ${{ env.OBS_PREPARE_RELEASE == 'true' }}
392+
uses: actions/upload-release-asset@v1
393+
env:
394+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
395+
with:
396+
upload_url: ${{ steps.create_release.outputs.upload_url }}
397+
asset_path: ./bin/.pio/build/obspro/firmware.bin
398+
asset_name: obspro-firmware.bin
399+
asset_content_type: application/x-esp32

custom_config.ini.example

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,8 @@
11
; This file should contain your local modifications to the PlatformIO.ini file.
22

3-
[env:esp32dev]
3+
[env:myObs]
44
build_flags =
5-
; settings needed by the build
6-
-DHTTPS_REQUEST_MAX_REQUEST_LENGTH=1024
7-
; reduce probability of https://github.com/fhessel/esp32_https_server/pull/123
8-
-DHTTPS_CONNECTION_DATA_CHUNK_SIZE=1024
9-
; custom default configuration
10-
;
5+
${env.build_flags}
116
; you can specify a custom config json (see docs/software/firmware/obs_cfg.md)
127
; here which will be used for fresh installs based on this firmware
138
-DCUSTOM_OBS_DEFAULT_CONFIG='"{ obs: [ { displayConfig: 15, offset: [ 30, 30 ], httpPin: \\"12345678\\", wifiSsid: \\"SID\\", wifiPassword: \\"87654321\\" } ] }"'

platformio.ini

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
src_dir = src
3838
extra_configs = custom_config.ini
3939

40-
[env:esp32dev]
40+
[env]
4141
platform = espressif32 @ 6.6.0
4242
; 5.4.0
4343
board = esp32dev
@@ -69,6 +69,13 @@ build_flags =
6969
-DHTTPS_CONNECTION_DATA_CHUNK_SIZE=1024
7070
; build number "-dev" will be replaced in github action
7171
-DBUILD_NUMBER=\"-dev\"
72-
; Select variant here
72+
73+
[env:obs]
74+
build_flags =
75+
${env.build_flags}
76+
-DOBSCLASSIC
77+
78+
[env:obspro]
79+
build_flags =
80+
${env.build_flags}
7381
-DOBSPRO
74-
; -DOBSCLASSIC

0 commit comments

Comments
 (0)