1- name : Benchmark a Pull Request
2-
1+ name : Benchmarks
32on :
4- pull_request :
5- branches :
6- - main
7-
3+ pull_request_target :
4+ branches : [ main ]
85permissions :
96 pull-requests : write
107
118jobs :
12- benchmark :
13- runs-on : ubuntu-latest
14-
15- steps :
16- - uses : actions/checkout@v4
17- - uses : julia-actions/setup-julia@v2
18- with :
19- version : " 1.10"
20- - uses : julia-actions/cache@v2
21- - name : Extract Package Name from Project.toml
22- id : extract-package-name
23- run : |
24- PACKAGE_NAME=$(grep "^name" Project.toml | sed 's/^name = "\(.*\)"$/\1/')
25- echo "package_name=$PACKAGE_NAME" >> $GITHUB_OUTPUT
26- - name : Build AirspeedVelocity
27- env :
28- JULIA_NUM_THREADS : 2
29- run : |
30- # Lightweight build step, as sometimes the runner runs out of memory:
31- julia -e 'ENV["JULIA_PKG_PRECOMPILE_AUTO"]=0; import Pkg; Pkg.add(;url="https://github.com/MilesCranmer/AirspeedVelocity.jl.git")'
32- julia -e 'ENV["JULIA_PKG_PRECOMPILE_AUTO"]=0; import Pkg; Pkg.build("AirspeedVelocity")'
33- - name : Add ~/.julia/bin to PATH
34- run : |
35- echo "$HOME/.julia/bin" >> $GITHUB_PATH
36- - name : Run benchmarks
37- run : |
38- echo $PATH
39- ls -l ~/.julia/bin
40- mkdir results
41- benchpkg ${{ steps.extract-package-name.outputs.package_name }} --rev="${{github.event.repository.default_branch}},${{github.event.pull_request.head.sha}}" --url=${{ github.event.repository.clone_url }} --bench-on="${{github.event.pull_request.head.sha}}" --output-dir=results/ --tune
42- - name : Create plots from benchmarks
43- run : |
44- mkdir -p plots
45- benchpkgplot ${{ steps.extract-package-name.outputs.package_name }} --rev="${{github.event.repository.default_branch}},${{github.event.pull_request.head.sha}}" --npart=10 --format=png --input-dir=results/ --output-dir=plots/
46- - name : Upload plot as artifact
47- uses : actions/upload-artifact@v4
48- with :
49- name : plots
50- path : plots
51- - name : Create markdown table from benchmarks
52- run : |
53- benchpkgtable ${{ steps.extract-package-name.outputs.package_name }} --rev="${{github.event.repository.default_branch}},${{github.event.pull_request.head.sha}}" --input-dir=results/ --ratio > table.md
54- echo '### Benchmark Results' > body.md
55- echo '' >> body.md
56- echo '' >> body.md
57- cat table.md >> body.md
58- echo '' >> body.md
59- echo '' >> body.md
60- echo '### Benchmark Plots' >> body.md
61- echo 'A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR.' >> body.md
62- echo 'Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).' >> body.md
63-
64- - name : Find Comment
65- uses : peter-evans/find-comment@v3
66- id : fcbenchmark
67- with :
68- issue-number : ${{ github.event.pull_request.number }}
69- comment-author : ' github-actions[bot]'
70- body-includes : Benchmark Results
71-
72- - name : Comment on PR
73- uses : peter-evans/create-or-update-comment@v4
74- with :
75- comment-id : ${{ steps.fcbenchmark.outputs.comment-id }}
76- issue-number : ${{ github.event.pull_request.number }}
77- body-path : body.md
78- edit-mode : replace
9+ bench :
10+ runs-on : ubuntu-latest
11+ steps :
12+ - uses : MilesCranmer/AirspeedVelocity.jl@action-v1
13+ with :
14+ julia-version : ' 1.10'
15+ bench-on : ${{ github.event.pull_request.head.sha }}
0 commit comments