1
- name : Benchmark a Pull Request
2
-
1
+ name : Benchmarks
3
2
on :
4
- pull_request :
5
- branches :
6
- - main
7
-
3
+ pull_request_target :
4
+ branches : [ main ]
8
5
permissions :
9
6
pull-requests : write
10
7
11
8
jobs :
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