Skip to content

Commit 4c82aab

Browse files
committed
update benchmark_pr.yml
1 parent 974c38e commit 4c82aab

File tree

1 file changed

+69
-64
lines changed

1 file changed

+69
-64
lines changed

.github/workflows/benchmark_pr.yml

Lines changed: 69 additions & 64 deletions
Original file line numberDiff line numberDiff line change
@@ -4,75 +4,80 @@ on:
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

813
permissions:
914
pull-requests: write
1015

1116
jobs:
12-
generate_plots:
13-
runs-on: ubuntu-latest
17+
generate_plots:
18+
runs-on: ubuntu-latest
1419

15-
steps:
16-
- uses: actions/checkout@v4
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@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
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

Comments
 (0)