Update action #181
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: Build with Arduino | |
on: | |
workflow_dispatch: | |
pull_request: | |
push: | |
paths: | |
- "src/**" | |
- "examples/**" | |
- ".github/workflows/arduino_ci.yml" | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
ArduinoLint: | |
name: ${{ matrix.board.fqbn }} | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
board: | |
- fqbn: esp32:esp32:esp32s3 | |
platform: esp32:esp32 | |
url: https://espressif.github.io/arduino-esp32/package_esp32_index.json | |
- fqbn: rp2040:rp2040:rpipico | |
platform: rp2040:rp2040 | |
url: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json | |
- fqbn: adafruit:nrf52:pca10056 | |
platform: adafruit:nrf52 | |
url: https://adafruit.github.io/arduino-board-index/package_adafruit_index.json | |
- fqbn: STMicroelectronics:stm32:GenF4 | |
platform: stmicroelectronics:stm32 | |
url: https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json | |
- fqbn: arduino:mbed_rp2040:pico | |
platform: arduino:mbed_rp2040 | |
include: | |
- example_file: examples.txt | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Arduino CLI | |
run: | | |
echo "Installing Arduino CLI..." | |
curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | sh | |
if [ $? -ne 0 ]; then | |
echo "Failed to install Arduino CLI." | |
exit 1 | |
fi | |
echo "./bin" >> $GITHUB_PATH | |
echo "Arduino CLI installed successfully." | |
- name: Install board | |
run: | | |
echo "Initializing Arduino CLI configuration..." | |
arduino-cli config init | |
arduino-cli config set library.enable_unsafe_install true | |
if [ -n "${{ matrix.board.url }}" ]; then | |
echo "Adding additional board manager URL: ${{ matrix.board.url }}" | |
arduino-cli config add board_manager.additional_urls ${{ matrix.board.url }} | |
fi | |
echo "Updating board index..." | |
arduino-cli core update-index | |
if [ $? -ne 0 ]; then | |
echo "Failed to update board index." | |
exit 1 | |
fi | |
echo "Installing board platform: ${{ matrix.board.platform }}" | |
arduino-cli core install ${{ matrix.board.platform }} | |
if [ $? -ne 0 ]; then | |
echo "Failed to install board platform." | |
exit 1 | |
fi | |
echo "Board platform installed successfully." | |
- name: Install libraries | |
run: | | |
echo "Installing required libraries..." | |
arduino-cli lib install --git-url https://github.com/ThingPulse/esp8266-oled-ssd1306.git | |
arduino-cli lib install --git-url https://github.com/arduino-libraries/MadgwickAHRS.git | |
arduino-cli lib install --git-url https://github.com/CreativeRobotics/Commander.git | |
arduino-cli lib install --git-url https://github.com/adafruit/SdFat.git | |
if [ $? -ne 0 ]; then | |
echo "Failed to install libraries." | |
exit 1 | |
fi | |
echo "Libraries installed successfully." | |
- name: Install adafruit-nrfutil | |
if: matrix.board.platform == 'adafruit:nrf52' | |
run: | | |
pip install adafruit-nrfutil | |
if [ $? -ne 0 ]; then | |
echo "Failed to install adafruit-nrfutil." | |
exit 1 | |
fi | |
echo "adafruit-nrfutil installed successfully." | |
echo "$HOME/.local/bin" >> $GITHUB_PATH | |
- name: Find .ino files in examples directory | |
id: find-examples | |
run: | | |
echo "Current working directory: $(pwd)" | |
if [ -d "./examples" ]; then | |
examples=$(find ./examples -name "*.ino" -print0 | tr '\0' ' ') | |
echo "Found examples: $examples" | |
echo "examples=$examples" >> $GITHUB_OUTPUT | |
else | |
echo "The './examples' directory does not exist." | |
exit 1 | |
fi | |
- name: Run test | |
run: | | |
for example in ${{ steps.find-examples.outputs.examples }}; do | |
echo "Compiling example: $example" | |
arduino-cli compile --library . -b ${{ matrix.board.fqbn }} $example | |
if [ $? -ne 0 ]; then | |
echo "Compilation failed for example: $example" | |
exit 1 | |
fi | |
echo "Compilation succeeded for example: $example" | |
done |