ci: install some ubuntu packages #63
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Compile Sketch | |
on: | |
push: | |
branches: [main] | |
tags: ["v*.*.*"] | |
pull_request: | |
branches: | |
- main | |
jobs: | |
compile-sketches: | |
name: ${{ matrix.board.fqbn }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
board: | |
# senseBox MCU | |
- fqbn: sensebox:samd:sb:power=on | |
platforms: | | |
- name: arduino:samd | |
- name: sensebox:samd | |
source-url: https://raw.githubusercontent.com/mariopesch/senseBoxMCU-core/master/package_sensebox_index.json | |
sketch-paths: | | |
- ./senseBox-bike | |
artifact-name-suffix: sensebox.samd.sb | |
# senseBox MCU S2 (ESP32) | |
- fqbn: esp32:esp32:sensebox_mcu_esp32s2 | |
platforms: | | |
- name: esp32:esp32 | |
source-url: https://espressif.github.io/arduino-esp32/package_esp32_index.json | |
sketch-paths: | | |
- ./senseBox-bike-atrai | |
- ./senseBox-bike-mcus2 | |
artifact-name-suffix: esp32.esp32.sensebox_mcu_esp32s2 | |
steps: | |
# This step makes the contents of the repository available to the workflow | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
# For more information: https://github.com/arduino/compile-sketches#readme | |
- name: Compile sketch | |
uses: arduino/compile-sketches@v1 | |
with: | |
fqbn: ${{ matrix.board.fqbn }} | |
platforms: ${{ matrix.board.platforms }} | |
sketch-paths: ${{ matrix.board.sketch-paths }} | |
libraries: | | |
- name: SenseBoxBLE | |
- name: "Adafruit HDC1000 Library" | |
- name: sensirion-sps | |
- name: "Adafruit MPU6050" | |
- name: NewPing | |
- name: "STM32duino VL53L8CX" | |
- name: "Adafruit GFX Library" | |
- name: "Adafruit SSD1306" | |
- source-url: https://github.com/felixerdy/QRCodeGenerator.git | |
- name: "Adafruit MAX1704X" | |
- name: SDConfig | |
- name: SD | |
- name: Ethernet | |
- name: NeoGPS | |
- name: WiFi101 | |
- name: TinyGPSPlus | |
- name: OneWire | |
- name: DallasTemperature | |
enable-deltas-report: true | |
enable-warnings-report: true | |
cli-compile-flags: | | |
- --export-binaries | |
- name: Clone repository | |
run: | | |
git clone https://github.com/arduino-libraries/ArduinoIoTCloud.git | |
apt-get update | |
apt-get install -y python3-lzss | |
apt-get install -y build-essential | |
- name: Create OTA update file | |
if: startsWith(matrix.board.fqbn, 'esp32') | |
run: | | |
pip install crccheck | |
cd ArduinoIoTCloud/extras/tools | |
# Set the Internal Field Separator to newline to handle paths correctly | |
IFS=$'\n' | |
# Convert the list of sketch paths into an array | |
sketch_paths=(${{ matrix.board.sketch-paths }}) | |
for sketch_path in "${sketch_paths[@]}"; do | |
if [[ "$sketch_path" != "-" ]]; then | |
echo "Processing sketch path: $sketch_path" | |
# replace ./ with nothing | |
clean_sketch_path=${sketch_path//.\//} | |
python3 lzss.py --encode $sketch_path/$sketch_path.ino.bin ${{ runner.temp }}/$clean_sketch_path.ino.lzss | |
echo "LZSS file created: ${{ runner.temp }}/$clean_sketch_path.ino.lzss" | |
python3 bin2ota.py ESP ${{ runner.temp }}/$clean_sketch_path.ino.lzss ${{ runner.temp }}/$clean_sketch_path.ino.ota | |
echo "OTA file created: ${{ runner.temp }}/$clean_sketch_path.ino.ota" | |
fi | |
done | |
- name: Export binaries as artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: ${{ matrix.board.artifact-name-suffix }} | |
path: ${{ github.workspace }} | |
release: | |
needs: compile-sketches | |
runs-on: ubuntu-latest | |
steps: | |
- name: Download Firmware Files | |
uses: actions/download-artifact@v4 | |
with: | |
path: release | |
- name: Release Firmware | |
uses: ncipollo/release-action@v1 | |
if: startsWith(github.ref, 'refs/tags/') | |
with: | |
artifacts: release/**/*.bin | |
allowUpdates: true | |
omitBodyDuringUpdate: true | |
token: ${{ secrets.GITHUB_TOKEN }} |