name: Build on: push: branches: [ '*' ] pull_request: branches: [ master ] workflow_dispatch: jobs: build_linux: runs-on: ubuntu-latest env: ARDUINO_SKETCH_ALWAYS_EXPORT_BINARIES: 1 steps: - uses: actions/checkout@v4 - name: Install Arduino CLI run: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh - name: Build firmware for ESP32 run: make - name: Build firmware for ESP32-C3 run: make BOARD=esp32:esp32:esp32c3 - name: Build firmware for ESP32-S3 run: make BOARD=esp32:esp32:esp32s3:CDCOnBoot=cdc - name: Build firmware for ESP32-S3 with QSPI PSRAM run: make BOARD=esp32:esp32:esp32s3:CDCOnBoot=cdc,PSRAM=enabled EXTRA=--output-dir=flix/build/esp32.esp32.esp32s3.qspi - name: Build firmware for ESP32-S3 with OPI PSRAM run: make BOARD=esp32:esp32:esp32s3:CDCOnBoot=cdc,PSRAM=opi EXTRA=--output-dir=flix/build/esp32.esp32.esp32s3.opi - name: Build firmware for Flix2 run: make BOARD=esp32:esp32:esp32s3:FlashSize=4M,CDCOnBoot=cdc,PSRAM=opi EXTRA='--build-property "compiler.cpp.extra_flags=-DFLIX2" --output-dir=flix/build/esp32.esp32.flix2' - name: Build firmware for STM32F4 run: | arduino-cli core install STMicroelectronics:stm32 --additional-urls https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json make BOARD=STMicroelectronics:stm32:GenF4 - name: Upload binaries uses: actions/upload-artifact@v4 with: name: firmware-binary path: flix/build - name: Check c_cpp_properties.json run: tools/check_c_cpp_properties.py build_macos: runs-on: macos-latest steps: - uses: actions/checkout@v4 - name: Install Arduino CLI run: brew install arduino-cli - name: Build firmware run: make - name: Check c_cpp_properties.json run: tools/check_c_cpp_properties.py build_windows: runs-on: windows-latest steps: - uses: actions/checkout@v4 - name: Install Arduino CLI run: choco install arduino-cli - name: Install Make run: choco install make - name: Build firmware run: make - name: Check c_cpp_properties.json run: python3 tools/check_c_cpp_properties.py build_simulator: runs-on: ubuntu-latest container: image: ubuntu:20.04 steps: - name: Install dependencies run: | apt-get update DEBIAN_FRONTEND=noninteractive apt-get install -y curl wget build-essential cmake g++ pkg-config gnupg2 lsb-release sudo - name: Install Arduino CLI run: curl -fsSL https://raw.githubusercontent.com/arduino/arduino-cli/master/install.sh | BINDIR=/usr/local/bin sh - uses: actions/checkout@v4 - name: Install Gazebo run: | sudo sh -c 'echo "deb http://packages.osrfoundation.org/gazebo/ubuntu-stable `lsb_release -cs` main" > /etc/apt/sources.list.d/gazebo-stable.list' wget https://packages.osrfoundation.org/gazebo.key -O - | sudo apt-key add - sudo apt-get update sudo apt-get install -y gazebo11 libgazebo11-dev - name: Install SDL2 run: sudo apt-get install -y libsdl2-dev - name: Build simulator run: make build_simulator - uses: actions/upload-artifact@v4 with: name: gazebo-plugin-binary path: gazebo/build/*.so retention-days: 1 build_simulator_macos: runs-on: macos-latest if: github.event_name == 'workflow_dispatch' steps: - name: Install Arduino CLI run: brew install arduino-cli - uses: actions/checkout@v4 - name: Clean up python binaries # Workaround for https://github.com/actions/setup-python/issues/577 run: | rm -f /usr/local/bin/2to3* rm -f /usr/local/bin/idle3* rm -f /usr/local/bin/pydoc3* rm -f /usr/local/bin/python3* rm -f /usr/local/bin/python3*-config - name: Install Gazebo run: brew update && brew tap osrf/simulation && brew install gazebo11 - name: Install SDL2 run: brew install sdl2 - name: Build simulator run: make build_simulator