-
Notifications
You must be signed in to change notification settings - Fork 1
131 lines (103 loc) · 3.86 KB
/
daily.yml
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
128
129
130
131
name: Daily
on:
# Run daily at midnight.
schedule:
- cron: 0 0 * * *
# Run whenever this workflow is changed.
push:
branches: [main]
# Allow running manually.
workflow_dispatch:
env:
# Force colorful output, even though we're running in Github Actions.
CARGO_TERM_COLOR: always
jobs:
bench:
name: Run benchmarks
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install Bencher
uses: bencherdev/bencher@main
- name: Install Linux dependencies
run: |
sudo apt-get update
# Installs Alsa and udev.
sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
- name: Cache build files
uses: Leafwing-Studios/cargo-cache@v1
# Run benchmarks, piping output to both `results.txt` and stdout.
- name: Run benchmarks
run: cargo bench -- 2>&1 | tee results.txt
- name: Find Bevy commit hash
id: bevy-hash
run: |
# Find the source property of Bevy, which returns something like:
# "git+https://github.com/bevyengine/bevy.git#d659a1f7d506c5c6eba9dfe2a6e878a8c72ecef6"
SOURCE=$(cargo metadata --format-version 1 | jq '.packages[] | select(.name == "bevy") | .source')
echo Bevy source is $SOURCE.
# Regex for a 40-character hexadecimal hash.
REGEX="[a-f0-9]{40}"
# Capture the hash from the source identifier.
HASH=$(echo $SOURCE | grep --extended-regexp --only-matching $REGEX)
echo Found hash is $HASH.
echo hash=$HASH >> $GITHUB_OUTPUT
- name: Upload benchmarks
env:
BENCHER_PROJECT: bevy
BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}
BENCHER_TESTBED: github-actions
run: |
bencher run \
--adapter rust_criterion \
--hash ${{ steps.bevy-hash.outputs.hash }} \
--err \
--file results.txt
file-size:
name: Track file size
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Install Rust
uses: dtolnay/rust-toolchain@stable
- name: Install Bencher
uses: bencherdev/bencher@main
- name: Install Linux dependencies
run: |
sudo apt-get update
# Installs Alsa and udev.
sudo apt-get install --no-install-recommends libasound2-dev libudev-dev
- name: Cache build files
uses: Leafwing-Studios/cargo-cache@v1
# Build all file-size binaries in release mode.
- name: Build binaries
run: cargo build --package file-size --profile file-size
- name: Find Bevy commit hash
id: bevy-hash
run: |
# Find the source property of Bevy, which returns something like:
# "git+https://github.com/bevyengine/bevy.git#d659a1f7d506c5c6eba9dfe2a6e878a8c72ecef6"
SOURCE=$(cargo metadata --format-version 1 | jq '.packages[] | select(.name == "bevy") | .source')
echo Bevy source is $SOURCE.
# Regex for a 40-character hexadecimal hash.
REGEX="[a-f0-9]{40}"
# Capture the hash from the source identifier.
HASH=$(echo $SOURCE | grep --extended-regexp --only-matching $REGEX)
echo Found hash is $HASH.
echo hash=$HASH >> $GITHUB_OUTPUT
- name: Upload benchmarks
env:
BENCHER_PROJECT: bevy
BENCHER_API_TOKEN: ${{ secrets.BENCHER_API_TOKEN }}
BENCHER_TESTBED: github-actions
run: |
bencher run \
--adapter json \
--hash ${{ steps.bevy-hash.outputs.hash }} \
--err \
--file-size target/file-size/default \
--file-size target/file-size/minimal