Skip to content

Benchmarks oct 23 fix #98

Benchmarks oct 23 fix

Benchmarks oct 23 fix #98

Workflow file for this run

name: benchmarks
on:
push:
branches:
- master
pull_request_target:
branches:
- master
types:
- opened
- reopened
- synchronize
- labeled # benchmarks label required
workflow_dispatch:
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref }}
cancel-in-progress: true
defaults:
run:
shell: bash -l {0}
jobs:
build:
if: github.event_name == 'push' ||
github.event_name == 'workflow_dispatch' ||
(github.event_name == 'pull_request_target' &&
contains(github.event.pull_request.labels.*.name, 'benchmarks'))
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
if: github.event_name != 'pull_request_target'
with:
fetch-depth: 0
- name: Checkout pull/${{ github.event.number }}
uses: actions/checkout@v3
with:
ref: ${{ github.sha }}
fetch-depth: 0
if: github.event_name == 'pull_request_target'
- name: Restore Atom Data
uses: actions/cache/restore@v3
id: atom-data-restore
with:
path: benchmarks/data/kurucz_cd23_chianti_H_He.h5
key: atom-data
- name: Download Atom Data
if: steps.atom-data-restore.outputs.cache-hit != 'true'
run: |
REPO_URL="https://dev.azure.com/tardis-sn/TARDIS/_apis/git/repositories/tardis-refdata"
wget -q "$REPO_URL/items?path=atom_data/kurucz_cd23_chianti_H_He.h5&versionType=branch&version=master&resolveLfs=true" -O benchmarks/data/kurucz_cd23_chianti_H_He.h5
- name: Save Atom Data
uses: actions/cache/save@v3
if: ${{ steps.atom-data-restore.outputs.cache-hit != 'true' && always() || false }}
id: atom-data-cache-save
with:
path: benchmarks/data/kurucz_cd23_chianti_H_He.h5
key: atom-data
- name: Setup Mamba
uses: mamba-org/setup-micromamba@v1
with:
environment-name: benchmark
init-shell: >-
bash
create-args: >-
python
asv
mamba
- name: Install asv
run: pip install asv
- name: Accept all asv questions
run: asv machine --yes
- name: Run benchmarks for last 5 commits if not PR
if: github.event_name != 'pull_request_target'
run: |
git log -n 5 --pretty=format:"%H" >> tag_commits.txt
asv run HASHFILE:tag_commits.txt | tee asv-output.log
if grep -q failed asv-output.log; then
echo "Some benchmarks have failed!"
exit 1
fi
- name: Generate Graphs and HTML
if: github.event_name != 'pull_request_target'
run: asv publish
- name: Delete env files
if: github.event_name != 'pull_request_target'
run: rm -r .asv/env
- name: Push results to results repository
if: github.event_name != 'pull_request_target'
continue-on-error: true
uses: cpina/github-action-push-to-another-repository@main
env:
API_TOKEN_GITHUB: ${{ secrets.BOT_TOKEN }}
with:
source-directory: .asv
destination-github-username: tardis-sn
destination-repository-name: tardis-benchmarks
user-email: tardis.sn.bot@gmail.com
target-branch: main
target-directory: .asv
- name: Compare HEAD with master if PR
if: github.event_name == 'pull_request_target'
continue-on-error: true # TODO: step failed sporadically while testing
run: |
asv continuous ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tee asv-cont-output.log
if grep -q failed asv-cont-output.log; then
echo "Some benchmarks have errors!"
exit 1
fi
- name: Compare Master and PR head
run: asv compare ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} | tee asv-compare-output.log
- name: Compare Master and PR head but only show changed results
run: asv compare ${{ github.event.pull_request.base.sha }} ${{ github.event.pull_request.head.sha }} --only-changed | tee asv-compare-changed-output.log
- name: Benchmarks compare output
id: asv_pr_vs_master
uses: juliangruber/read-file-action@v1.0.0
with:
path: asv-compare-output.log
- name: Benchmarks compare only changed output
id: asv_pr_vs_master_changed
uses: juliangruber/read-file-action@v1.0.0
with:
path: asv-compare-changed-output.log
- name: Find Comment
if: always() && github.event_name == 'pull_request_target'
uses: peter-evans/find-comment@v1
id: fc
with:
issue-number: ${{ github.event.number }}
body-includes: I ran benchmarks as you asked
- name: Post comment
if: github.event_name == 'pull_request_target'
uses: peter-evans/create-or-update-comment@v2
with:
token: ${{ secrets.BOT_TOKEN }}
issue-number: ${{ github.event.number }}
comment-id: ${{ steps.fc.outputs.comment-id }}
edit-mode: replace
body: |
*\*beep\* \*bop\**
Hi human,
I ran benchmarks as you asked comparing master (${{ github.event.pull_request.base.sha }}) and the latest commit (${{ github.event.pull_request.head.sha }}).
Here are the logs produced by ASV.
Results can also be downloaded as artifacts [**here**](${{ env.URL }}).
Significantly changed benchmarks:
<details>
```diff
${{ steps.asv_pr_vs_master_changed.outputs.content }}
```
</details>
All benchmarks:
<details>
```diff
${{ steps.asv_pr_vs_master.outputs.content }}
```
</details>
env:
URL: https://github.com/${{ github.repository_owner }}/${{ github.event.repository.name }}/actions/runs/${{ github.run_id }}?check_suite_focus=true
- name: Save results artifact
uses: actions/upload-artifact@v3
if: always()
with:
name: asv-benchmark-results-${{ runner.os }}
path: |
.asv/results
asv-cont-output.log
asv-compare-output.log
asv-compare-changed-output.log