44 pull_request_target :
55 branches :
66 - master
7+ concurrency :
8+ # Skip intermediate builds: always.
9+ # Cancel intermediate builds: only if it is a pull request build.
10+ group : ${{ github.workflow }}-${{ github.ref }}
11+ cancel-in-progress : ${{ startsWith(github.ref, 'refs/pull/') }}
712
813permissions :
914 pull-requests : write
1015
1116jobs :
12- generate_plots :
13- runs-on : ubuntu-latest
17+ generate_plots :
18+ runs-on : ubuntu-latest
1419
15- steps :
16- - uses : actions/checkout@v2
17- - uses : julia-actions/setup-julia@v1
18- with :
19- version : " 1.9"
20- - uses : julia-actions/cache@v1
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 "::set-output name=package_name::$PACKAGE_NAME"
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.repository.default_branch }}" --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@v2
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
20+ steps :
21+ - uses : actions/checkout@v4
22+ - uses : julia-actions/setup-julia@v2
23+ with :
24+ version : " 1.9"
25+ - uses : julia-actions/cache@v2
26+ - name : Extract Package Name from Project.toml
27+ id : extract-package-name
28+ run : |
29+ PACKAGE_NAME=$(grep "^name" Project.toml | sed 's/^name = "\(.*\)"$/\1/')
30+ echo "::set-output name=package_name::$PACKAGE_NAME"
31+ - name : Build AirspeedVelocity
32+ env :
33+ JULIA_NUM_THREADS : 2
34+ run : |
35+ # Lightweight build step, as sometimes the runner runs out of memory:
36+ julia -e 'ENV["JULIA_PKG_PRECOMPILE_AUTO"]=0; import Pkg; Pkg.add(;url="https://github.com/MilesCranmer/AirspeedVelocity.jl.git")'
37+ julia -e 'ENV["JULIA_PKG_PRECOMPILE_AUTO"]=0; import Pkg; Pkg.build("AirspeedVelocity")'
38+ - name : Add ~/.julia/bin to PATH
39+ run : |
40+ echo "$HOME/.julia/bin" >> $GITHUB_PATH
41+ - name : Run benchmarks
42+ run : |
43+ echo $PATH
44+ ls -l ~/.julia/bin
45+ mkdir results
46+ 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/ --exeflags="-O3 --threads=auto"
47+ - name : Create plots from benchmarks
48+ run : |
49+ mkdir -p plots
50+ 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/
51+ - name : Upload plot as artifact
52+ uses : actions/upload-artifact@v4
53+ with :
54+ name : plots
55+ path : plots
56+ - name : Create markdown table from benchmarks
57+ run : |
58+ 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
59+ echo '### Benchmark Results' > body.md
60+ echo '' >> body.md
61+ echo '' >> body.md
62+ cat table.md >> body.md
63+ echo '' >> body.md
64+ echo '' >> body.md
65+ echo '### Benchmark Plots' >> body.md
66+ echo 'A plot of the benchmark results have been uploaded as an artifact to the workflow run for this PR.' >> body.md
67+ echo 'Go to "Actions"->"Benchmark a pull request"->[the most recent run]->"Artifacts" (at the bottom).' >> body.md
6368
64- - name : Find Comment
65- uses : peter-evans/find-comment@v2
66- id : fcbenchmark
67- with :
68- issue-number : ${{ github.event.pull_request.number }}
69- comment-author : ' github-actions[bot]'
70- body-includes : Benchmark Results
69+ - name : Find Comment
70+ uses : peter-evans/find-comment@v3
71+ id : fcbenchmark
72+ with :
73+ issue-number : ${{ github.event.pull_request.number }}
74+ comment-author : " github-actions[bot]"
75+ body-includes : Benchmark Results
7176
72- - name : Comment on PR
73- uses : peter-evans/create-or-update-comment@v3
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
77+ - name : Comment on PR
78+ uses : peter-evans/create-or-update-comment@v4
79+ with :
80+ comment-id : ${{ steps.fcbenchmark.outputs.comment-id }}
81+ issue-number : ${{ github.event.pull_request.number }}
82+ body-path : body.md
83+ edit-mode : replace
0 commit comments