Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,291 +3,309 @@
on:
pull_request:
branches: [main]
# ready_for_review is included so that marking a draft PR "Ready for
# review" triggers a build (the draft guard below skips draft PRs);
# it is not in GitHub's default set (opened/synchronize/reopened).
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'components/**'
- 'external/**'
- '.github/workflows/build.yml'
- '!**/idf_component.yml'
- '!**/README.md'

# Supersede in-progress runs: a new commit on the same PR cancels the earlier,
# now-stale build. Keyed by the workflow (so it never cross-cancels other
# workflows) + the PR number, which is globally unique - unlike the head branch
# name, two fork PRs can't collide on it. For non-PR events (push, release) we
# fall back to github.run_id, which is unique per run, so those runs each get
# their own group and never serialize or cancel each other.
# cancel-in-progress is gated to pull_request events only so that push-to-main
# runs are never cancelled.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build:
# Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs.
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
Comment thread
finger563 marked this conversation as resolved.

runs-on: ubuntu-latest
continue-on-error: true

strategy:
matrix:
test:
- path: 'components/adc/example'
target: esp32
- path: 'components/adc/example'
target: esp32s3
- path: 'components/adc/example'
target: esp32p4
- path: 'components/adc/example'
target: esp32c6
- path: 'components/adrc/example'
target: esp32
- path: 'components/ads1x15/example'
target: esp32
- path: 'components/ads7138/example'
target: esp32s3
- path: 'components/adxl345/example'
target: esp32s3
- path: 'components/as5600/example'
target: esp32s3
- path: 'components/at581x/example'
target: esp32s3
- path: 'components/aw9523/example'
target: esp32
- path: 'components/bdc_driver/example'
target: esp32s3
- path: 'components/binary-log/example'
target: esp32s3
- path: 'components/bldc_current_sense/example'
target: esp32s3
- path: 'components/bldc_haptics/example'
target: esp32s3
- path: 'components/bldc_motor/example'
target: esp32s3
- path: 'components/ble_gatt_server/example'
target: esp32s3
- path: 'components/bm8563/example'
target: esp32
- path: 'components/bmi270/example'
target: esp32p4
- path: 'components/bq27220/example'
target: esp32
- path: 'components/button/example'
target: esp32
- path: 'components/byte90/example'
target: esp32s3
- path: 'components/chsc6x/example'
target: esp32s3
- path: 'components/cdr/example'
target: esp32
- path: 'components/cli/example'
target: esp32
- path: 'components/cobs/example'
target: esp32s3
- path: 'components/color/example'
target: esp32
- path: 'components/controller/example'
target: esp32s3
- path: 'components/cst816/example'
target: esp32s3
- path: 'components/csv/example'
target: esp32
- path: 'components/display_drivers/example'
target: esp32
- path: 'components/dns_server/example'
target: esp32s3
- path: 'components/drv2605/example'
target: esp32
- path: 'components/encoder/example'
target: esp32
- path: 'components/esp32-timer-cam/example'
target: esp32
- path: 'components/esp32-p4-eth/example'
target: esp32p4
- path: 'components/esp32-p4-function-ev-board/example'
target: esp32p4
- path: 'components/esp32-p4-nano/example'
target: esp32p4
- path: 'components/esp-box/example'
target: esp32s3
- path: 'components/ethernet/example'
target: esp32
- path: 'components/event_manager/example'
target: esp32
- path: 'components/expressive_eyes/example'
target: esp32s3
- path: 'components/file_system/example'
target: esp32
- path: 'components/filters/example'
target: esp32
- path: 'components/ftp/example'
target: esp32
- path: 'components/ft5x06/example'
target: esp32s3
- path: 'components/gfps_service/example'
target: esp32s3
- path: 'components/gps/example'
target: esp32s3
- path: 'components/gt911/example'
target: esp32s3
- path: 'components/hid-rp/example'
target: esp32s3
- path: 'components/hid_service/example'
target: esp32s3

# build variants of the i2c example for the different configurations to
# ensure they're all built and tested
- path: 'components/i2c/example'
target: esp32
command: idf.py -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.legacy_api" build
- path: 'components/i2c/example'
target: esp32
command: idf.py -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.new_api" build

- path: 'components/icm20948/example'
target: esp32s3
- path: 'components/icm42607/example'
target: esp32s3
- path: 'components/ina226/example'
target: esp32p4
- path: 'components/interrupt/example'
target: esp32s3
- path: 'components/iperf_menu/example'
target: esp32s3
- path: 'components/joystick/example'
target: esp32
- path: 'components/kts1622/example'
target: esp32
- path: 'components/led/example'
target: esp32
- path: 'components/led_strip/example'
target: esp32
- path: 'components/lilygo-t5-47/example'
target: esp32s3
- path: 'components/logger/example'
target: esp32
- path: 'components/lp5817/example'
target: esp32
- path: 'components/lsm6dso/example'
target: esp32s3
- path: 'components/m5stack-cardputer/example'
target: esp32s3
- path: 'components/m5stack-tab5/example'
target: esp32p4
- path: 'components/math/example'
target: esp32
- path: 'components/matouch-rotary-display/example'
target: esp32s3
- path: 'components/max1704x/example'
target: esp32
- path: 'components/monitor/example'
target: esp32
- path: 'components/motorgo-axis/example'
target: esp32s3
- path: 'components/motorgo-mini/example'
target: esp32s3
- path: 'components/motorgo-plink/example'
target: esp32s3
- path: 'components/mcp23x17/example'
target: esp32s3
- path: 'components/meshtastic/example'
target: esp32s3
- path: 'components/mt6701/example'
target: esp32s3
- path: 'components/neopixel/example'
target: esp32s3
- path: 'components/nvs/example'
target: esp32s3
- path: 'components/odrive_ascii/example'
target: esp32
- path: 'components/pca9535/example'
target: esp32s3
- path: 'components/pcf85063/example'
target: esp32s3
- path: 'components/pi4ioe5v/example'
target: esp32
- path: 'components/pid/example'
target: esp32
- path: 'components/ping/example'
target: esp32s3
- path: 'components/provisioning/example'
target: esp32s3
- path: 'components/qmi8658/example'
target: esp32s3
- path: 'components/qtpy/example'
target: esp32
- path: 'components/qtpy/example'
target: esp32s3
- path: 'components/qwiicnes/example'
target: esp32
- path: 'components/remote_debug/example'
target: esp32s3
- path: 'components/rmt/example'
target: esp32s3
- path: 'components/rtps/example'
target: esp32
- path: 'components/rtps_embedded/example'
target: esp32
- path: 'components/rtsp/example'
target: esp32
- path: 'components/runqueue/example'
target: esp32
- path: 'components/rx8130ce/example'
target: esp32s3
- path: 'components/seeed-studio-round-display/example'
target: esp32s3
- path: 'components/serialization/example'
target: esp32
- path: 'components/smartpanlee-sc01-plus/example'
target: esp32s3
- path: 'components/socket/example'
target: esp32
- path: 'components/spi/example'
target: esp32s3
- path: 'components/st25dv/example'
target: esp32s3
- path: 'components/st7123touch/example'
target: esp32s3
- path: 'components/state_machine/example'
target: esp32
- path: 'components/sx126x/example'
target: esp32s3
- path: 'components/t-deck/example'
target: esp32s3
- path: 'components/t-dongle-s3/example'
target: esp32s3
- path: 'components/t_keyboard/example'
target: esp32s3
- path: 'components/tabulate/example'
target: esp32
- path: 'components/task/example'
target: esp32
- path: 'components/thermistor/example'
target: esp32
- path: 'components/thread_pool/example'
target: esp32
- path: 'components/timer/example'
target: esp32
- path: 'components/trajectory_planner/example'
target: esp32
- path: 'components/touch/example'
target: esp32
- path: 'components/tla2528/example'
target: esp32
- path: 'components/tt21100/example'
target: esp32s3
- path: 'components/vl53l/example'
target: esp32s3
- path: 'components/wifi/example'
target: esp32
- path: 'components/wrover-kit/example'
target: esp32
- path: 'components/ws-s3-geek/example'
target: esp32s3
- path: 'components/ws-s3-lcd-1-47/example'
target: esp32s3
- path: 'components/ws-s3-touch/example'
target: esp32s3
- path: 'components/xiao-esp32s3-sense/example'
target: esp32s3

steps:
- name: Checkout repo
uses: actions/checkout@v7
with:
submodules: 'recursive'

- name: Build Examples
uses: espressif/esp-idf-ci-action@v1
with:
esp_idf_version: v5.5.1
target: ${{ matrix.test.target }}
path: ${{ matrix.test.path }}
command: ${{ matrix.test.command || 'idf.py build' }}

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
22 changes: 22 additions & 0 deletions .github/workflows/build_libraries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,101 +3,123 @@
on:
pull_request:
branches: [main]
# ready_for_review is included so that marking a draft PR "Ready for
# review" triggers a build (the draft guard below skips draft PRs);
# it is not in GitHub's default set (opened/synchronize/reopened).
types: [opened, synchronize, reopened, ready_for_review]
push:
branches: [main]
release:
types: [published]
workflow_dispatch:

# Supersede in-progress runs: a new commit on the same PR cancels the earlier,
# now-stale build. Keyed by the workflow (so it never cross-cancels other
# workflows) + the PR number, which is globally unique - unlike the head branch
# name, two fork PRs can't collide on it. For non-PR events (push, release) we
# fall back to github.run_id, which is unique per run, so those runs each get
# their own group and never serialize or cancel each other.
# cancel-in-progress is gated to pull_request events only so that push-to-main
# (and release) runs are never cancelled.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build_windows:
# Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs.
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false

runs-on: windows-latest
continue-on-error: false

steps:
- name: Checkout repo
uses: actions/checkout@v7
with:
submodules: 'recursive'
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Build libraries
working-directory: lib/
run: |
mkdir build
cd build
cmake ..
cmake --build . --config Release --target install

- name: Upload output folder
uses: actions/upload-artifact@v7
with:
name: libespp_windows
path: lib/pc

build_linux:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
# Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs.
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false

runs-on: ubuntu-latest
continue-on-error: false

steps:
- name: Checkout repo
uses: actions/checkout@v7
with:
submodules: 'recursive'
fetch-depth: 0

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Build libraries
working-directory: lib/
run: |
./build.sh

- name: Upload output folder
uses: actions/upload-artifact@v7
with:
name: libespp_linux
path: lib/pc

build_macos:

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
# Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs.
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false

runs-on: macos-latest
continue-on-error: false

steps:
- name: Setup XCode
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: latest-stable

- name: Set up Python
uses: actions/setup-python@v6
with:
python-version: '3.12'

- name: Checkout repo
uses: actions/checkout@v7
with:
submodules: 'recursive'
fetch-depth: 0

- name: Build libraries
working-directory: lib/
run: |
./build.sh

- name: Upload output folder
uses: actions/upload-artifact@v7
with:
name: libespp_macos
path: lib/pc

Check warning

Code scanning / CodeQL

Workflow does not contain permissions Medium

Actions job or workflow does not limit the permissions of the GITHUB_TOKEN. Consider setting an explicit permissions block, using the following as a minimal starting point: {contents: read}
20 changes: 20 additions & 0 deletions .github/workflows/build_wheels.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ name: Build Python Wheels
on:
pull_request:
branches: [main]
# ready_for_review is included so that marking a draft PR "Ready for
# review" triggers a build (the draft guard below skips draft PRs);
# it is not in GitHub's default set (opened/synchronize/reopened).
types: [opened, synchronize, reopened, ready_for_review]
paths:
- 'lib/**'
- 'components/**'
Expand All @@ -19,9 +23,23 @@ on:
permissions:
contents: read

# Supersede in-progress runs: a new commit on the same PR cancels the earlier,
# now-stale build. Keyed by the workflow (so it never cross-cancels other
# workflows) + the PR number, which is globally unique - unlike the head branch
# name, two fork PRs can't collide on it. For non-PR events (push, release) we
# fall back to github.run_id, which is unique per run, so those runs each get
# their own group and never serialize or cancel each other.
# cancel-in-progress is gated to pull_request events only so that push-to-main
# (and release) runs are never cancelled.
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }}
cancel-in-progress: ${{ github.event_name == 'pull_request' }}

jobs:
build_wheels:
name: Build wheels on ${{ matrix.os }}
# Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs.
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
Expand Down Expand Up @@ -53,6 +71,8 @@ jobs:

build_sdist:
name: Build source distribution
# Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs.
if: github.event_name != 'pull_request' || github.event.pull_request.draft == false
runs-on: ubuntu-latest

steps:
Expand Down