diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 00000000..608033e4 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,50 @@ +name: Benchmark + +on: [push, pull_request_target, workflow_dispatch] + +jobs: + benchmark: + name: Performance regression check + if: contains(toJSON(github.event.head_commit.message), 'Merge pull request ') == false + runs-on: ubuntu-24.04 + steps: + - uses: actions/checkout@v4 + - name: Test changed files + id: changed-files + uses: tj-actions/changed-files@v44 + with: + files: | + src/riscv.c + src/decode.c + src/emulate.c + src/rv32_template.c + src/rv32_constopt.c + - name: install-dependencies + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch'}} + run: | + sudo pip3 install numpy --break-system-packages + shell: bash + - name: default build + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch'}} + run: make ENABLE_SDL=0 + - name: Run benchmark + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch'}} + run: | + tests/bench-aggregator.py + - name: Store benchmark results + if: ${{ steps.changed-files.outputs.any_changed == 'true' || + github.event_name == 'workflow_dispatch'}} + uses: benchmark-action/github-action-benchmark@v1 + with: + name: Benchmarks + tool: 'customBiggerIsBetter' + output-file-path: benchmark_output.json + github-token: ${{ secrets.RV32EMU_BENCH_TOKEN }} + gh-repository: 'github.com/sysprog21/rv32emu-bench' + gh-pages-branch: 'master' + auto-push: true + comment-always: true + benchmark-data-dir-path: . diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 9f85c5fc..9fbb2676 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,51 +1,8 @@ name: CI -on: [push, pull_request, workflow_dispatch] +on: [push, pull_request] jobs: - benchmark: - runs-on: ubuntu-24.04 - steps: - - uses: actions/checkout@v4 - - name: Test changed files - id: changed-files - uses: tj-actions/changed-files@v44 - with: - files: | - src/riscv.c - src/decode.c - src/emulate.c - src/rv32_template.c - src/rv32_constopt.c - - name: install-dependencies - if: ${{ steps.changed-files.outputs.any_changed == 'true' || - github.event_name == 'workflow_dispatch'}} - run: | - sudo pip3 install numpy --break-system-packages - shell: bash - - name: default build - if: ${{ steps.changed-files.outputs.any_changed == 'true' || - github.event_name == 'workflow_dispatch'}} - run: make ENABLE_SDL=0 - - name: Run benchmark - if: ${{ steps.changed-files.outputs.any_changed == 'true' || - github.event_name == 'workflow_dispatch'}} - run: | - tests/bench-aggregator.py - - name: Store benchmark results - if: ${{ steps.changed-files.outputs.any_changed == 'true' || - github.event_name == 'workflow_dispatch'}} - uses: benchmark-action/github-action-benchmark@v1 - with: - name: Benchmarks - tool: 'customBiggerIsBetter' - output-file-path: benchmark_output.json - github-token: ${{ secrets.RV32EMU_BENCH_TOKEN }} - gh-repository: 'github.com/sysprog21/rv32emu-bench' - gh-pages-branch: 'master' - auto-push: true - comment-always: true - benchmark-data-dir-path: . detect-code-related-file-changes: runs-on: ubuntu-22.04 outputs: