feat(rmt): adds new function to send specific number of loops #243
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Arduino as ESP-IDF Component | |
on: | |
workflow_dispatch: | |
inputs: | |
idf_ver: | |
description: "IDF Versions" | |
default: "release-v5.3,release-v5.4,release-v5.5" | |
type: "string" | |
required: true | |
idf_targets: | |
description: "IDF Targets" | |
default: "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4" | |
type: "string" | |
required: false | |
push: | |
branches: | |
- master | |
- release/* | |
pull_request: | |
paths: | |
- "cores/**" | |
- "libraries/**/*.cpp" | |
- "libraries/**/*.c" | |
- "libraries/**/*.h" | |
- "idf_component_examples/**" | |
- "idf_component.yml" | |
- "Kconfig.projbuild" | |
- "CMakeLists.txt" | |
- ".github/workflows/build_component.yml" | |
- ".github/scripts/check-cmakelists.sh" | |
- ".github/scripts/on-push-idf.sh" | |
- ".github/scripts/sketch_utils.sh" | |
- ".github/scripts/get_affected.py" | |
- "variants/esp32/**" | |
- "variants/esp32c2/**" | |
- "variants/esp32c3/**" | |
- "variants/esp32c5/**" | |
- "variants/esp32c6/**" | |
- "variants/esp32h2/**" | |
- "variants/esp32p4/**" | |
- "variants/esp32s2/**" | |
- "variants/esp32s3/**" | |
- "!*.md" | |
- "!*.txt" | |
- "!*.properties" | |
permissions: | |
contents: read | |
concurrency: | |
group: build-component-${{github.event.pull_request.number || github.ref}} | |
cancel-in-progress: true | |
jobs: | |
cmake-check: | |
name: Check CMakeLists | |
runs-on: ubuntu-latest | |
if: ${{ !(github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/')) }} | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- run: bash ./.github/scripts/check-cmakelists.sh | |
set-matrix: | |
name: Set Matrix | |
runs-on: ubuntu-latest | |
if: ${{ !(github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/')) }} | |
outputs: | |
matrix: ${{ steps.set-matrix.outputs.matrix }} | |
should_build: ${{ steps.affected-examples.outputs.should_build }} | |
steps: | |
- name: Install universal-ctags | |
uses: awalsh128/cache-apt-pkgs-action@2c09a5e66da6c8016428a2172bd76e5e4f14bb17 # v1.5.3 | |
with: | |
packages: libicu74 libjansson4 libxml2 libyaml-0-2 universal-ctags | |
version: 1 | |
execute_install_scripts: true | |
- name: Checkout repository | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
fetch-depth: 2 | |
- name: Get changed files | |
id: changed-files | |
uses: tj-actions/changed-files@2f7c5bfce28377bc069a65ba478de0a74aa0ca32 # v46.0.1 | |
- name: Get affected examples | |
id: affected-examples | |
env: | |
IS_PR: ${{ github.event_name == 'pull_request' }} | |
run: | | |
(which ctags-universal || which ctags) || (echo "Error: Neither ctags-universal nor ctags found in PATH" && exit 1) | |
python3 ./.github/scripts/get_affected.py --debug --component ${{ steps.changed-files.outputs.all_changed_files }} > affected_examples.txt | |
- name: Upload affected examples | |
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
with: | |
name: affected_examples | |
path: affected_examples.txt | |
if-no-files-found: error | |
- name: Upload debug artifacts | |
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
with: | |
name: get_affected_debug | |
path: | | |
ctags_defs_by_qname.json | |
ctags_header_to_qnames.json | |
ctags_tags.jsonl | |
dependencies.json | |
dependencies_reverse.json | |
if-no-files-found: warn | |
- name: Get Matrix Combinations | |
id: set-matrix | |
run: | | |
# Define version-specific target configurations | |
get_targets_for_version() { | |
case "$1" in | |
"release-v5.3") | |
echo "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4" | |
;; | |
"release-v5.4") | |
echo "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4" | |
;; | |
"release-v5.5") | |
echo "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c5,esp32c6,esp32h2,esp32p4" | |
;; | |
*) | |
echo "" | |
;; | |
esac | |
} | |
# Default versions if not provided via inputs | |
DEFAULT_VERSIONS="release-v5.3,release-v5.4,release-v5.5" | |
# Use inputs if provided, otherwise use defaults | |
if [[ -n "${{ inputs.idf_ver }}" ]]; then | |
VERSIONS="${{ inputs.idf_ver }}" | |
else | |
VERSIONS="$DEFAULT_VERSIONS" | |
fi | |
# Generate matrix combinations | |
echo '{"include": [' > matrix.json | |
first=true | |
IFS=',' read -ra VERSION_ARRAY <<< "$VERSIONS" | |
for version in "${VERSION_ARRAY[@]}"; do | |
# Trim whitespace | |
version=$(echo "$version" | xargs) | |
# Get targets for this version | |
if [[ -n "${{ inputs.idf_targets }}" ]]; then | |
# Use provided targets for all versions | |
targets="${{ inputs.idf_targets }}" | |
else | |
# Use version-specific targets | |
targets=$(get_targets_for_version "$version") | |
fi | |
if [[ -n "$targets" ]]; then | |
IFS=',' read -ra TARGET_ARRAY <<< "$targets" | |
for target in "${TARGET_ARRAY[@]}"; do | |
# Trim whitespace | |
target=$(echo "$target" | xargs) | |
if [ "$first" = true ]; then | |
first=false | |
else | |
echo ',' >> matrix.json | |
fi | |
echo "{\"idf_ver\": \"$version\", \"idf_target\": \"$target\"}" >> matrix.json | |
done | |
fi | |
done | |
echo ']}' >> matrix.json | |
# Debug: Print the matrix for verification | |
echo "Debug - Generated matrix:" | |
cat matrix.json | jq . | |
# Set output | |
printf "matrix=%s\n" "$(cat matrix.json | jq -c .)" >> $GITHUB_OUTPUT | |
build-esp-idf-component: | |
name: Build IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }} | |
runs-on: ubuntu-latest | |
needs: set-matrix | |
if: ${{ needs.set-matrix.outputs.should_build == '1' }} | |
strategy: | |
fail-fast: false | |
matrix: ${{ fromJson(needs.set-matrix.outputs.matrix) }} | |
container: espressif/idf:${{ matrix.idf_ver }} | |
steps: | |
- name: Check out arduino-esp32 as a component | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
with: | |
submodules: recursive | |
path: components/arduino-esp32 | |
# Need to install jq in the container to be able to use it in the script | |
- name: Setup jq | |
uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 | |
- name: Download affected examples | |
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 | |
with: | |
name: affected_examples | |
- name: Build | |
env: | |
IDF_TARGET: ${{ matrix.idf_target }} | |
shell: bash | |
run: | | |
chmod a+x ./components/arduino-esp32/.github/scripts/* | |
./components/arduino-esp32/.github/scripts/on-push-idf.sh affected_examples.txt | |
- name: Upload generated sdkconfig files for debugging | |
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 | |
if: always() | |
with: | |
name: sdkconfig-${{ matrix.idf_ver }}-${{ matrix.idf_target }} | |
path: ./components/arduino-esp32/idf_component_examples/**/sdkconfig |