-
Notifications
You must be signed in to change notification settings - Fork 0
127 lines (102 loc) · 3.81 KB
/
Copy pathrelease-benchmarks.yml
File metadata and controls
127 lines (102 loc) · 3.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
name: Release Benchmarks
# Archive full Criterion benchmark baselines for published releases.
# Release jobs publish durable artifacts, so they intentionally do not restore
# or save dependency caches.
permissions:
contents: read
on:
release:
types:
- published
concurrency:
group: release-benchmarks-${{ github.event.release.tag_name }}
cancel-in-progress: false
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
release-baseline:
runs-on: ubuntu-latest
timeout-minutes: 60
outputs:
release-asset: ${{ steps.package-baseline.outputs.asset }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
ref: ${{ github.event.release.tag_name }}
persist-credentials: false
- name: Install Rust toolchain
uses: actions-rust-lang/setup-rust-toolchain@166cdcfd11aee3cb47222f9ddb555ce30ddb9659 # v1.17.0
with:
cache: false
- name: Set up just
uses: ./.github/actions/setup-just
- name: Resolve cargo-nextest version
id: cargo_nextest_version
shell: bash
run: |
set -euo pipefail
version="$(just --evaluate cargo_nextest_version)"
if [[ -z "$version" ]]; then
echo "::error::Could not resolve cargo_nextest_version from justfile"
exit 1
fi
echo "version=$version" >> "$GITHUB_OUTPUT"
- name: Install cargo-nextest
uses: taiki-e/cache-cargo-install-action@9ee83daaa7b96a6fab930949ecf1122bba04a389 # v3.0.8
with:
tool: cargo-nextest@${{ steps.cargo_nextest_version.outputs.version }}
- name: Validate benchmark inputs
run: just test-bench-inputs
- name: Save release Criterion baseline
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
set -euo pipefail
cargo bench --locked --features bench --bench vs_linalg -- --save-baseline "$RELEASE_TAG"
cargo bench --locked --features bench,exact --bench exact -- --save-baseline "$RELEASE_TAG"
- name: Package release Criterion baseline
id: package-baseline
env:
RELEASE_TAG: ${{ github.event.release.tag_name }}
run: |
set -euo pipefail
asset="la-stack-${RELEASE_TAG}-criterion-baseline.tar.gz"
tar -C target -czf "$asset" criterion
echo "asset=$asset" >> "$GITHUB_OUTPUT"
- name: Upload temporary baseline artifact
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: bench-baseline-${{ github.event.release.tag_name }}
path: ${{ steps.package-baseline.outputs.asset }}
retention-days: 30
if-no-files-found: error
publish-baseline:
needs: release-baseline
permissions:
contents: write
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Download release baseline
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: bench-baseline-${{ github.event.release.tag_name }}
- name: Attach baseline to GitHub Release
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TAG: ${{ github.event.release.tag_name }}
RELEASE_ASSET: ${{ needs.release-baseline.outputs.release-asset }}
run: |
set -euo pipefail
gh release upload "$RELEASE_TAG" "$RELEASE_ASSET" --clobber
- name: Release baseline summary
env:
RELEASE_ASSET: ${{ needs.release-baseline.outputs.release-asset }}
run: |
set -euo pipefail
{
echo "### Release Benchmark Baseline"
echo ""
echo "Uploaded release asset: \`$RELEASE_ASSET\`"
} >> "$GITHUB_STEP_SUMMARY"