mirror of
https://github.com/MrUnknownDE/OpenIris-ESPIDF.git
synced 2026-04-18 14:03:45 +02:00
124 lines
3.7 KiB
YAML
124 lines
3.7 KiB
YAML
name: Build nad Release the OpenIris bin files
|
|
|
|
on:
|
|
workflow_dispatch:
|
|
push:
|
|
tags:
|
|
- "*.*.*"
|
|
branches:
|
|
- "main"
|
|
- "beta"
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- reopened
|
|
- synchronize
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
permissions:
|
|
contents: write
|
|
deployments: write
|
|
|
|
jobs:
|
|
setup:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
matrix: ${{ steps.set-matrix.outputs.matrix }}
|
|
steps:
|
|
- id: set-matrix
|
|
run: echo "matrix={\"firmware_config\":[{\"board_name\":\"esp32AIThinker\", \"target\":\"esp32\"}, {\"board_name\":\"esp32M5Stack\", \"target\":\"esp32\"}, {\"board_name\":\"esp32cam\", \"target\":\"esp32\"}, {\"board_name\":\"esp_eye\", \"target\":\"esp32s3\"}, {\"board_name\":\"facefocusvr_eye_L\", \"target\":\"esp32s3\"}, {\"board_name\":\"facefocusvr_eye_R\", \"target\":\"esp32s3\"}, {\"board_name\":\"facefocusvr_face\", \"target\":\"esp32s3\"}, {\"board_name\":\"project_babble\", \"target\":\"esp32s3\"}, {\"board_name\":\"seed_studio_xiao_esp32s3\", \"target\":\"esp32s3\"}, {\"board_name\":\"wrooms3\", \"target\":\"esp32s3\"}, {\"board_name\":\"wrooms3QIO\", \"target\":\"esp32s3\"}, {\"board_name\":\"wrover\", \"target\":\"esp32s3\"}]}" >> $GITHUB_OUTPUT
|
|
|
|
build:
|
|
needs: setup
|
|
permissions:
|
|
contents: write
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{fromJson(needs.setup.outputs.matrix)}}
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v5
|
|
with:
|
|
submodules: "recursive"
|
|
|
|
- name: Setup UV
|
|
uses: astral-sh/setup-uv@v6
|
|
|
|
- name: Set up Python
|
|
run: uv python install
|
|
|
|
- name: Setup SDKConfig
|
|
run: uv run ./tools/switchBoardType.py --board ${{ matrix.firmware_config.board_name }} --diff
|
|
|
|
- name: Show SDKConfig
|
|
run: cat ./sdkconfig
|
|
|
|
- name: Build
|
|
uses: espressif/esp-idf-ci-action@v1
|
|
with:
|
|
esp_idf_version: v5.4.2
|
|
target: ${{ matrix.firmware_config.target }}
|
|
path: ./
|
|
|
|
- name: Merge bins
|
|
uses: espressif/esp-idf-ci-action@v1
|
|
with:
|
|
esp_idf_version: v5.4.2
|
|
target: ${{ matrix.firmware_config.target }}
|
|
path: ./
|
|
command: idf.py merge-bin -f raw
|
|
|
|
- name: Zip the resulting bin
|
|
run: zip -r ${{matrix.firmware_config.board_name}}.zip build/merged-binary.bin
|
|
|
|
- name: Archive Firmware binaries
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: ${{matrix.firmware_config.board_name}}-firmware
|
|
path: ./${{matrix.firmware_config.board_name}}.zip
|
|
retention-days: 5
|
|
if-no-files-found: error
|
|
|
|
release:
|
|
runs-on: ubuntu-latest
|
|
needs: build
|
|
steps:
|
|
- name: Checkout repo
|
|
uses: actions/checkout@v5
|
|
|
|
- name: Prepare directory
|
|
run: mkdir -p build
|
|
|
|
- name: Download firmware builds
|
|
uses: actions/download-artifact@v4
|
|
with:
|
|
merge-multiple: true
|
|
path: build/
|
|
|
|
- name: Show downloaded artifacts
|
|
run: ls ./build/
|
|
|
|
- name: Make Release
|
|
uses: softprops/action-gh-release@v2
|
|
if: github.ref_type == 'tag'
|
|
with:
|
|
files: build/*.zip
|
|
prerelease: ${{contains(github.ref_type, 'rc')}}
|
|
|
|
cleanup:
|
|
needs: [setup, release]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix: ${{fromJson(needs.setup.outputs.matrix)}}
|
|
name: Cleanup actions
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 10
|
|
steps:
|
|
- name: "♻️ remove build artifacts"
|
|
uses: geekyeggo/delete-artifact@v5
|
|
with:
|
|
name: ${{matrix.firmware_config.board_name}}-firmware
|