ci(component): Move component compilation to a separate workflow #5
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: true | |
push: | |
branches: | |
- master | |
- release/* | |
pull_request: | |
paths: | |
- "cores/**" | |
- "libraries/**/*.cpp" | |
- "libraries/**/*.c" | |
- "libraries/**/*.h" | |
- "libraries/**/*.ino" | |
- "libraries/**/ci.json" | |
- "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" | |
- "variants/esp32/**" | |
- "variants/esp32c2/**" | |
- "variants/esp32c3/**" | |
- "variants/esp32c6/**" | |
- "variants/esp32h2/**" | |
- "variants/esp32p4/**" | |
- "variants/esp32s2/**" | |
- "variants/esp32s3/**" | |
- "!*.md" | |
- "!*.txt" | |
- "!*.properties" | |
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: | |
idf_ver: ${{ steps.set-matrix.outputs.idf_ver }} | |
idf_target: ${{ steps.set-matrix.outputs.idf_target }} | |
steps: | |
- name: Get IDF Version and Targets | |
id: set-matrix | |
run: | | |
# Default values | |
idf_ver="release-v5.3,release-v5.4,release-v5.5" | |
idf_targets="esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4" | |
# Override with inputs if provided | |
if [[ -n "${{ inputs.idf_ver }}" ]]; then | |
idf_ver="${{ inputs.idf_ver }}" | |
fi | |
if [[ -n "${{ inputs.idf_targets }}" ]]; then | |
idf_targets="${{ inputs.idf_targets }}" | |
fi | |
# Convert comma-separated strings to JSON arrays using a more robust method | |
idf_ver_json=$(printf '%s\n' "$idf_ver" | tr ',' '\n' | jq -R . | jq -s . | jq -c .) | |
idf_targets_json=$(printf '%s\n' "$idf_targets" | tr ',' '\n' | jq -R . | jq -s . | jq -c .) | |
# Debug: Print the JSON for verification | |
echo "Debug - idf_ver_json: $idf_ver_json" | |
echo "Debug - idf_targets_json: $idf_targets_json" | |
# Set outputs - ensure no extra whitespace | |
printf "idf_ver=%s\n" "$idf_ver_json" >> $GITHUB_OUTPUT | |
printf "idf_target=%s\n" "$idf_targets_json" >> $GITHUB_OUTPUT | |
build-esp-idf-component: | |
name: Build IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }} | |
runs-on: ubuntu-latest | |
needs: set-matrix | |
strategy: | |
fail-fast: false | |
matrix: | |
# The version names here correspond to the versions of espressif/idf Docker image. | |
# See https://hub.docker.com/r/espressif/idf/tags and | |
# https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-docker-image.html | |
# for details. | |
idf_ver: ${{ fromJson(needs.set-matrix.outputs.idf_ver) }} | |
idf_target: ${{ fromJson(needs.set-matrix.outputs.idf_target) }} | |
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 | |
- name: Setup jq | |
uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 | |
- 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 | |
- 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 |