forked from espressif/esp-protocols
102 lines
3.6 KiB
YAML
102 lines
3.6 KiB
YAML
name: "examples: build/host-tests"
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- master
|
|
pull_request:
|
|
types: [opened, synchronize, reopened, labeled]
|
|
|
|
jobs:
|
|
build_all_examples:
|
|
if: contains(github.event.pull_request.labels.*.name, 'examples') || github.event_name == 'push'
|
|
name: Build examples
|
|
strategy:
|
|
matrix:
|
|
idf_ver: ["latest", "release-v5.1", "release-v5.2", "release-v5.3", "release-v5.4"]
|
|
include:
|
|
- idf_ver: "latest"
|
|
warning: "Warning: The smallest app partition is nearly full"
|
|
runs-on: ubuntu-22.04
|
|
container: espressif/idf:${{ matrix.idf_ver }}
|
|
env:
|
|
TARGET_TEST: examples/esp_netif/slip_custom_netif/
|
|
TARGET_TEST_DIR: build_esp32c3_target
|
|
steps:
|
|
- name: Checkout esp-protocols
|
|
uses: actions/checkout@v4
|
|
- name: Build with IDF-${{ matrix.idf_ver }}
|
|
env:
|
|
EXPECTED_WARNING: ${{ matrix.warning }}
|
|
shell: bash
|
|
run: |
|
|
. ${IDF_PATH}/export.sh
|
|
python -m pip install idf-build-apps
|
|
# Build default configs for all targets
|
|
python ./ci/build_apps.py examples -m examples/.build-test-rules.yml -d -c
|
|
# Build target tests
|
|
python ./ci/build_apps.py ${TARGET_TEST} -r sdkconfig.ci=target
|
|
cd ${TARGET_TEST}
|
|
${GITHUB_WORKSPACE}/ci/clean_build_artifacts.sh `pwd`/${TARGET_TEST_DIR}
|
|
zip -qur artifacts.zip ${TARGET_TEST_DIR}
|
|
- uses: actions/upload-artifact@v4
|
|
with:
|
|
name: slip_target_${{ matrix.idf_ver }}
|
|
path: ${{ env.TARGET_TEST }}/artifacts.zip
|
|
if-no-files-found: error
|
|
|
|
build_and_run_on_host:
|
|
if: contains(github.event.pull_request.labels.*.name, 'examples') || github.event_name == 'push'
|
|
name: Build and run examples on linux
|
|
strategy:
|
|
matrix:
|
|
idf_ver: ["latest"]
|
|
runs-on: ubuntu-22.04
|
|
container: espressif/idf:${{ matrix.idf_ver }}
|
|
steps:
|
|
- name: Checkout esp-protocols
|
|
uses: actions/checkout@v4
|
|
- name: Build with IDF-${{ matrix.idf_ver }}
|
|
shell: bash
|
|
run: |
|
|
. ${IDF_PATH}/export.sh
|
|
python -m pip install idf-build-apps
|
|
python ./ci/build_apps.py examples/mqtt -l -t linux
|
|
timeout 5 ./examples/mqtt/build_linux_default/esp_mqtt_demo.elf | tee test.log || true
|
|
grep 'MQTT_EVENT_DATA' test.log
|
|
|
|
run_on_target:
|
|
# Skip running on forks since it won't have access to secrets
|
|
if: |
|
|
github.repository == 'espressif/esp-protocols' &&
|
|
( contains(github.event.pull_request.labels.*.name, 'examples') || github.event_name == 'push' )
|
|
name: Slip example target test
|
|
needs: build_all_examples
|
|
strategy:
|
|
matrix:
|
|
idf_ver: ["release-v5.4", "latest"]
|
|
runs-on:
|
|
- self-hosted
|
|
- modem
|
|
env:
|
|
TARGET_TEST: examples/esp_netif/slip_custom_netif/
|
|
TARGET_TEST_DIR: build_esp32c3_target
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
- uses: actions/download-artifact@v4
|
|
with:
|
|
name: slip_target_${{ matrix.idf_ver }}
|
|
path: ${{ env.TARGET_TEST }}/ci/
|
|
- name: Run Test
|
|
working-directory: ${{ env.TARGET_TEST }}
|
|
run: |
|
|
python -m venv .venv
|
|
source .venv/bin/activate
|
|
pip install --prefer-binary cryptography pytest-embedded pytest-embedded-serial-esp pytest-embedded-idf pytest-custom_exit_code esptool netifaces
|
|
unzip ci/artifacts.zip -d ci
|
|
for dir in `ls -d ci/build_*`; do
|
|
rm -rf build sdkconfig.defaults
|
|
mv $dir build
|
|
python -m pytest --log-cli-level DEBUG --target=esp32c3
|
|
done
|