name: Build and Release ESP32 Firmware on: push: branches: [ "main", "master" ] tags: - "v*.*.*" pull_request: branches: [ "main", "master" ] workflow_dispatch: permissions: contents: write jobs: build: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 # 公式のアクションで arduino-cli をセットアップ - name: Setup Arduino CLI uses: arduino/setup-arduino-cli@v2 # ESP32 パッケージインデックスの更新と 2.0.14 のインストール - name: Install ESP32 Board Core (2.0.14) run: | arduino-cli config init arduino-cli config set board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json arduino-cli core update-index arduino-cli core install esp32:esp32@2.0.14 # 依存ライブラリのインストール - name: Install ESP32-A2DP library run: arduino-cli lib install "ESP32-A2DP" # コンパイル実行 - name: Compile Sketch run: | arduino-cli compile \ --fqbn esp32:esp32:esp32 \ --build-property "build.partitions=huge_app" \ --build-property "upload.maximum_size=3145728" \ firmware/firmware.ino # 通常の Artifacts 保存 - name: Upload Build Artifacts uses: actions/upload-artifact@v4 with: name: esp32-a2dp-firmware path: | firmware/build/esp32.esp32.esp32/*.bin # GitHub Release の自動作成 & アセット添付 (タグ Push 時のみ) - name: Create GitHub Release if: startsWith(github.ref, 'refs/tags/') uses: softprops/action-gh-release@v2 with: files: | firmware/build/esp32.esp32.esp32/firmware.ino.bin firmware/build/esp32.esp32.esp32/firmware.ino.bootloader.bin firmware/build/esp32.esp32.esp32/firmware.ino.partitions.bin generate_release_notes: true