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 : " $GITHUB_WORKSPACE/examples/display_lvgl_benchmarks"
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 find \
36+ --path ${{ env.BENCHMARK_PROJECT_DIR }} \
37+ --target all
38+
39+ idf-build-apps build \
40+ --path ${{ env.BENCHMARK_PROJECT_DIR }} \
41+ --target all \
42+ --collect-app-info build_info.json
43+ - uses : actions/upload-artifact@v7
44+ if : github.repository_owner == 'espressif'
45+ with :
46+ name : app_binaries
47+ path : |
48+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/bootloader/bootloader.bin
49+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/partition_table/partition-table.bin
50+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/*.bin
51+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/flasher_args.json
52+ ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/config/sdkconfig.json
53+ build_info*.json
54+
55+ run_benchmarks :
56+ name : Run benchmarks
57+ if : github.repository_owner == 'espressif'
58+ needs : build_benchmarks
59+ strategy :
60+ matrix :
61+ idf_ver :
62+ - " release-v5.5"
63+ env :
64+ BENCHMARK_PROJECT_DIR : " $GITHUB_WORKSPACE/examples/display_lvgl_benchmarks"
65+ TEST_RESULT_NAME : test_results_lvgl_benchmarks
66+ TEST_RESULT_FILE : test_results_lvgl_benchmarks.xml
67+ runs-on : [self-hosted, Linux, bspwall]
68+ container :
69+ image : espressif/idf:${{ matrix.idf_ver }}
70+ options : --privileged -v /dev/boards:/dev/boards/
71+ steps :
72+ - uses : actions/checkout@v4
73+ - uses : actions/download-artifact@v4
74+ with :
75+ pattern : app_binaries
76+ - name : Run apps
77+ run : |
78+ export IDF_PYTHON_CHECK_CONSTRAINTS=yes
79+ ${IDF_PATH}/install.sh --enable-ci --enable-pytest
80+ . ${IDF_PATH}/export.sh
81+ pip install --prefer-binary pytest-custom_exit_code pytest-xdist
82+
83+ pytest \
84+ ${{ env.BENCHMARK_PROJECT_DIR }} \
85+ --suppress-no-test-exit-code \
86+ --junit-xml=${{ env.TEST_RESULT_FILE }} \
87+ - name : Upload test results
88+ uses : actions/upload-artifact@v4
89+ if : always()
90+ with :
91+ name : ${{ env.TEST_RESULT_NAME }}
92+ path : |
93+ ${{ env.TEST_RESULT_FILE }}
94+ *.log
95+ benchmark_*.md
96+ benchmark_*.json
97+ benchmark.json
0 commit comments