1+ name : Run LVGL benchmarks and publish their outputs
2+
3+ on :
4+ push :
5+ branches :
6+ - master
7+ schedule :
8+ - cron : ' 0 20 * * SAT'
9+ # TODO: Remove
10+ pull_request :
11+ types : [opened, reopened, synchronize, labeled]
12+
13+ permissions :
14+ checks : write
15+
16+ jobs :
17+ build_benchmarks :
18+ strategy :
19+ matrix :
20+ idf_ver :
21+ - " release-v5.5"
22+ env :
23+ BENCHMARK_PROJECT_DIR : " examples/display_lvgl_benchmark"
24+ runs-on : ubuntu-latest
25+ container : espressif/idf:${{ matrix.idf_ver }}
26+ steps :
27+ - uses : actions/checkout@v6
28+ - name : Build benchmark binaries
29+ shell : bash
30+ run : |
31+ export IDF_PYTHON_CHECK_CONSTRAINTS=yes
32+ ${IDF_PATH}/install.sh --enable-ci
33+ source ${IDF_PATH}/export.sh
34+
35+ idf-build-apps build \
36+ --path ${{ env.BENCHMARK_PROJECT_DIR }} \
37+ --target all \
38+ --collect-app-info build_info.json
39+ - uses : actions/upload-artifact@v7
40+ if : github.repository_owner == 'espressif'
41+ with :
42+ name : app_binaries
43+ path : |
44+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/bootloader/bootloader.bin
45+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/partition_table/partition-table.bin
46+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/*.bin
47+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/flasher_args.json
48+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/config/sdkconfig.json
49+ build_info*.json
50+
51+ run_benchmarks :
52+ name : Run benchmarks
53+ if : github.repository_owner == 'espressif'
54+ needs : build_benchmarks
55+ strategy :
56+ matrix :
57+ idf_ver :
58+ - " release-v5.5"
59+ env :
60+ BENCHMARK_PROJECT_DIR : " examples/display_lvgl_benchmark"
61+ TEST_RESULT_NAME : test_results_lvgl_benchmarks
62+ TEST_RESULT_FILE : test_results_lvgl_benchmarks.xml
63+ runs-on : [self-hosted, Linux, bspwall]
64+ container :
65+ image : espressif/idf:${{ matrix.idf_ver }}
66+ options : --privileged -v /dev/boards:/dev/boards/
67+ steps :
68+ - uses : actions/checkout@v4
69+ - uses : actions/download-artifact@v4
70+ with :
71+ pattern : app_binaries
72+ merge-multiple : true
73+ - name : Run apps
74+ run : |
75+ export IDF_PYTHON_CHECK_CONSTRAINTS=yes
76+ ${IDF_PATH}/install.sh --enable-ci --enable-pytest
77+ . ${IDF_PATH}/export.sh
78+ pip install --prefer-binary pytest-custom_exit_code pytest-xdist
79+
80+ export PYTEST_EMBEDDED_CACHE_DIR=/tmp/pytest-embedded-cache-dummy
81+ mkdir -p /tmp/pytest-embedded-cache-dummy
82+ pytest \
83+ ${{ env.BENCHMARK_PROJECT_DIR }} \
84+ -c pytest.ini \
85+ --suppress-no-test-exit-code \
86+ --junit-xml=${{ env.TEST_RESULT_FILE }} \
87+ -p no:idf-ci
88+ - name : Upload test results
89+ uses : actions/upload-artifact@v4
90+ if : always()
91+ with :
92+ name : ${{ env.TEST_RESULT_NAME }}
93+ path : |
94+ ${{ env.TEST_RESULT_FILE }}
95+ *.log
96+ benchmark_*.md
97+ benchmark_*.json
98+ benchmark.json
0 commit comments