kind: pipeline type: docker name: build-and-release-esp32 trigger: branch: - main - master event: - push - pull_request - tag steps: # --- 1. arduino-cli の準備、ボード・ライブラリ導入、ビルド --- - name: build-firmware image: python:3.11-slim environment: HOME: /root commands: - sed -i 's|http://deb.debian.org|https://deb.debian.org|g' /etc/apt/sources.list.d/debian.sources && apt-get -o Acquire::Retries=5 update && apt-get install -y curl git # arduino-cli のインストール - curl -fsSL --ipv4 --connect-timeout 20 --retry 5 --retry-delay 5 --retry-all-errors https://downloads.arduino.cc/arduino-cli/arduino-cli_latest_Linux_64bit.tar.gz | tar -xz -C /usr/local/bin arduino-cli - arduino-cli version # ESP32 パッケージインデックスの更新と 2.0.14 のインストール - arduino-cli config init --overwrite - arduino-cli config set board_manager.additional_urls https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json - arduino-cli config set network.connection_timeout 300s - | for i in 1 2 3 4 5; do arduino-cli core update-index && arduino-cli core install esp32:esp32@2.0.14 && break if [ "$i" = 5 ]; then exit 1; fi echo "Retry $i failed, waiting..."; sleep 15 done # ライブラリのインストール - mkdir -p /root/Arduino/libraries - git clone https://github.com/pschatzmann/ESP32-A2DP.git /root/Arduino/libraries/ESP32-A2DP - arduino-cli lib install "U8g2" - arduino-cli lib install "Adafruit AHTX0" - arduino-cli lib install "BH1750" - arduino-cli lib install "Adafruit NeoPixel" # スケッチのコンパイル - | arduino-cli compile \ --fqbn "esp32:esp32:esp32:PartitionScheme=huge_app,FlashMode=dio,FlashSize=4M" \ --build-path build_temp \ --output-dir build \ firmware/firmware.ino # バイナリファイル名の正規化 (リネーム) - | if [ -f build/firmware.ino.bootloader.bin ]; then mv build/firmware.ino.bootloader.bin build/bootloader.bin fi if [ -f build/firmware.ino.partitions.bin ]; then mv build/firmware.ino.partitions.bin build/partitions.bin fi if [ -f build/firmware.ino.bin ]; then mv build/firmware.ino.bin build/firmware.bin fi # --- 2. タグPush時(v*.*.*)に Gitea へリリース作成 & バイナリ添付 --- - name: release-to-gitea image: plugins/gitea-release settings: base_url: https://gitea.j-code.org # あなたの Gitea の URL に変更してください api_key: from_secret: gitea_token # Drone Secrets に登録した Access Token files: - build/bootloader.bin - build/partitions.bin - build/firmware.bin when: event: - tag