Bsp/esp32s31 korvo1 #105
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: Run LVGL benchmarks and publish their outputs | |
| on: | |
| push: | |
| branches: | |
| - master | |
| schedule: | |
| - cron: '0 20 * * SAT' | |
| workflow_dispatch: | |
| pull_request: | |
| types: [opened, reopened, synchronize, labeled] | |
| permissions: | |
| checks: write | |
| env: | |
| BENCHMARK_PROJECT_DIR: "examples/display_lvgl_benchmark" | |
| jobs: | |
| build_benchmarks: | |
| runs-on: ubuntu-latest | |
| container: espressif/idf:release-v5.5 | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build benchmark binaries | |
| shell: bash | |
| run: | | |
| export IDF_PYTHON_CHECK_CONSTRAINTS=yes | |
| ${IDF_PATH}/install.sh --enable-ci | |
| source ${IDF_PATH}/export.sh | |
| idf-build-apps build \ | |
| --path ${{ env.BENCHMARK_PROJECT_DIR }} \ | |
| --target all \ | |
| --size-json-filename size.json \ | |
| --collect-app-info build_info.json | |
| - uses: actions/upload-artifact@v7 | |
| if: github.repository_owner == 'espressif' | |
| with: | |
| name: app_binaries | |
| path: | | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/bootloader/bootloader.bin | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/partition_table/partition-table.bin | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/*.bin | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/size.json | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/flasher_args.json | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/config/sdkconfig.json | |
| build_info*.json | |
| run_benchmarks: | |
| name: Run benchmarks | |
| if: github.repository_owner == 'espressif' | |
| needs: build_benchmarks | |
| strategy: | |
| matrix: | |
| idf_ver: | |
| - "release-v5.5" | |
| env: | |
| TEST_RESULT_NAME: test_results_lvgl_benchmarks | |
| runs-on: [self-hosted, Linux, bspwall] | |
| container: | |
| image: espressif/idf:${{ matrix.idf_ver }} | |
| options: --privileged -v /dev/boards:/dev/boards/ | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| pattern: app_binaries | |
| # Restores artifacts to their original paths | |
| merge-multiple: true | |
| - name: Run apps | |
| run: | | |
| export IDF_PYTHON_CHECK_CONSTRAINTS=yes | |
| ${IDF_PATH}/install.sh --enable-ci --enable-pytest | |
| . ${IDF_PATH}/export.sh | |
| pip install --prefer-binary pytest-custom_exit_code pytest-xdist | |
| export PYTEST_EMBEDDED_CACHE_DIR=/tmp/pytest-embedded-cache-dummy | |
| mkdir -p /tmp/pytest-embedded-cache-dummy | |
| # Run benchmarks with custom config | |
| pytest \ | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/pytest_display_lvgl_benchmark.py \ | |
| --junit-xml=${{ env.TEST_RESULT_NAME }}.xml \ | |
| -n auto | |
| - name: Combine reports into metrics | |
| env: | |
| IDF_VERSION: ${{ matrix.idf_ver }} | |
| run: | | |
| python .github/ci/metrics/merge_metrics.py ${{ env.BENCHMARK_PROJECT_DIR }} | |
| cp ${{ env.BENCHMARK_PROJECT_DIR }}/bsp_metrics.json bsp_metrics.json | |
| - name: Upload benchmark results | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: ${{ env.TEST_RESULT_NAME }} | |
| path: | | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/benchmark_*.json | |
| ${{ env.BENCHMARK_PROJECT_DIR }}/build_*/size.json | |
| *.log | |
| - name: Upload benchmark metrics | |
| uses: actions/upload-artifact@v7 | |
| if: always() | |
| with: | |
| name: benchmark_metrics | |
| path: bsp_metrics.json | |
| upload_metrics: | |
| runs-on: ubuntu-latest | |
| # Dry run on pull requests and manual triggers | |
| if: github.repository_owner == 'espressif' && (github.event_name == 'schedule' || github.event_name == 'push') | |
| needs: run_benchmarks | |
| env: | |
| ESP_METRICS_S3_SERVER: https://idf-s3.espressif.cn:9000 | |
| ESP_METRICS_S3_ACCESS_KEY: ${{ secrets.ESP_METRICS_S3_ACCESS_KEY }} | |
| ESP_METRICS_S3_SECRET_KEY: ${{ secrets.ESP_METRICS_S3_SECRET_KEY }} | |
| ESP_METRICS_S3_LONG_TERM_BUCKET: longterm | |
| ESP_METRICS_S3_SHORT_TERM_BUCKET: idf-artifacts | |
| ESP_METRICS_PROJECT_URL: ${{ github.server_url }}/${{ github.repository }} | |
| ESP_METRICS_PROJECT_ID: ${{ github.repository_id }} | |
| ESP_METRICS_COMMIT_SHA: ${{ github.sha }} | |
| ESP_METRICS_BRANCH_NAME: ${{ github.ref_name }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - uses: actions/download-artifact@v8 | |
| with: | |
| pattern: benchmark_metrics | |
| - uses: actions/setup-python@v6 | |
| with: { python-version: "3.10" } | |
| - run: pip install --no-cache-dir esp-metrics-cli | |
| - name: metrics | |
| run: | | |
| esp-metrics-cli validate -d .github/ci/metrics/benchmark_schema.yaml -i bsp_metrics.json --verbose | |
| esp-metrics-cli upload -d .github/ci/metrics/benchmark_schema.yaml -i bsp_metrics.json --verbose |