-
Notifications
You must be signed in to change notification settings - Fork 322
188 lines (166 loc) Β· 14.3 KB
/
Copy pathwasm-size.yml
File metadata and controls
188 lines (166 loc) Β· 14.3 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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
name: 'QC: Wasm size'
on:
pull_request:
paths-ignore:
- '.github/**'
- '!.github/workflows/wasm-size.yml'
- '!.github/workflows/include/rust-wasm-setup/action.yml'
- '*.md'
- 'LICENSE'
- 'CODEOWNERS'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
jobs:
pr-wasm-size:
name: calculate module sizes (pr)
runs-on: ubuntu-latest
outputs:
postgresql_fast_qc_size: ${{ steps.measure-qc.outputs.postgresql_fast_qc_size }}
postgresql_fast_qc_size_gz: ${{ steps.measure-qc.outputs.postgresql_fast_qc_size_gz }}
mysql_fast_qc_size: ${{ steps.measure-qc.outputs.mysql_fast_qc_size }}
mysql_fast_qc_size_gz: ${{ steps.measure-qc.outputs.mysql_fast_qc_size_gz }}
sqlite_fast_qc_size: ${{ steps.measure-qc.outputs.sqlite_fast_qc_size }}
sqlite_fast_qc_size_gz: ${{ steps.measure-qc.outputs.sqlite_fast_qc_size_gz }}
sqlserver_fast_qc_size: ${{ steps.measure-qc.outputs.sqlserver_fast_qc_size }}
sqlserver_fast_qc_size_gz: ${{ steps.measure-qc.outputs.sqlserver_fast_qc_size_gz }}
cockroachdb_fast_qc_size: ${{ steps.measure-qc.outputs.cockroachdb_fast_qc_size }}
cockroachdb_fast_qc_size_gz: ${{ steps.measure-qc.outputs.cockroachdb_fast_qc_size_gz }}
postgresql_small_qc_size: ${{ steps.measure-qc.outputs.postgresql_small_qc_size }}
postgresql_small_qc_size_gz: ${{ steps.measure-qc.outputs.postgresql_small_qc_size_gz }}
mysql_small_qc_size: ${{ steps.measure-qc.outputs.mysql_small_qc_size }}
mysql_small_qc_size_gz: ${{ steps.measure-qc.outputs.mysql_small_qc_size_gz }}
sqlite_small_qc_size: ${{ steps.measure-qc.outputs.sqlite_small_qc_size }}
sqlite_small_qc_size_gz: ${{ steps.measure-qc.outputs.sqlite_small_qc_size_gz }}
sqlserver_small_qc_size: ${{ steps.measure-qc.outputs.sqlserver_small_qc_size }}
sqlserver_small_qc_size_gz: ${{ steps.measure-qc.outputs.sqlserver_small_qc_size_gz }}
cockroachdb_small_qc_size: ${{ steps.measure-qc.outputs.cockroachdb_small_qc_size }}
cockroachdb_small_qc_size_gz: ${{ steps.measure-qc.outputs.cockroachdb_small_qc_size_gz }}
steps:
- name: Checkout PR branch
uses: actions/checkout@v4
- uses: ./.github/workflows/include/rust-wasm-setup
- name: Build and measure QC on PR branch
id: measure-qc
run: |
export ENGINE_SIZE_OUTPUT=$GITHUB_OUTPUT
make measure-qc-wasm
base-wasm-size:
name: calculate module sizes (base branch)
runs-on: ubuntu-latest
outputs:
postgresql_fast_qc_size: ${{ steps.measure-qc.outputs.postgresql_fast_qc_size }}
postgresql_fast_qc_size_gz: ${{ steps.measure-qc.outputs.postgresql_fast_qc_size_gz }}
mysql_fast_qc_size: ${{ steps.measure-qc.outputs.mysql_fast_qc_size }}
mysql_fast_qc_size_gz: ${{ steps.measure-qc.outputs.mysql_fast_qc_size_gz }}
sqlite_fast_qc_size: ${{ steps.measure-qc.outputs.sqlite_fast_qc_size }}
sqlite_fast_qc_size_gz: ${{ steps.measure-qc.outputs.sqlite_fast_qc_size_gz }}
sqlserver_fast_qc_size: ${{ steps.measure-qc.outputs.sqlserver_fast_qc_size }}
sqlserver_fast_qc_size_gz: ${{ steps.measure-qc.outputs.sqlserver_fast_qc_size_gz }}
cockroachdb_fast_qc_size: ${{ steps.measure-qc.outputs.cockroachdb_fast_qc_size }}
cockroachdb_fast_qc_size_gz: ${{ steps.measure-qc.outputs.cockroachdb_fast_qc_size_gz }}
postgresql_small_qc_size: ${{ steps.measure-qc.outputs.postgresql_small_qc_size }}
postgresql_small_qc_size_gz: ${{ steps.measure-qc.outputs.postgresql_small_qc_size_gz }}
mysql_small_qc_size: ${{ steps.measure-qc.outputs.mysql_small_qc_size }}
mysql_small_qc_size_gz: ${{ steps.measure-qc.outputs.mysql_small_qc_size_gz }}
sqlite_small_qc_size: ${{ steps.measure-qc.outputs.sqlite_small_qc_size }}
sqlite_small_qc_size_gz: ${{ steps.measure-qc.outputs.sqlite_small_qc_size_gz }}
sqlserver_small_qc_size: ${{ steps.measure-qc.outputs.sqlserver_small_qc_size }}
sqlserver_small_qc_size_gz: ${{ steps.measure-qc.outputs.sqlserver_small_qc_size_gz }}
cockroachdb_small_qc_size: ${{ steps.measure-qc.outputs.cockroachdb_small_qc_size }}
cockroachdb_small_qc_size_gz: ${{ steps.measure-qc.outputs.cockroachdb_small_qc_size_gz }}
steps:
- name: Checkout base branch
uses: actions/checkout@v4
with:
ref: ${{ github.event.pull_request.base.sha }}
- uses: ./.github/workflows/include/rust-wasm-setup
- name: Build and measure QC on base branch
id: measure-qc
run: |
export ENGINE_SIZE_OUTPUT=$GITHUB_OUTPUT
make measure-qc-wasm
report-diff:
name: report module size
runs-on: ubuntu-latest
needs:
- pr-wasm-size
- base-wasm-size
permissions:
pull-requests: write
steps:
- name: Compute difference
id: compute
run: |
fmt() {
echo "$1" | numfmt --format '%.3f' --to=iec-i --suffix=B
}
compute_diff() {
local provider="$1"
local base="$2"
local pr="$3"
local diff=$(fmt "$(($pr - $base))")
echo "${provider}_base=$(fmt "$base")" >> $GITHUB_OUTPUT
echo "${provider}_pr=$(fmt "$pr")" >> $GITHUB_OUTPUT
echo "${provider}_diff=$diff" >> $GITHUB_OUTPUT
}
compute_diff "postgresql_fast_qc" "${{ needs.base-wasm-size.outputs.postgresql_fast_qc_size }}" "${{ needs.pr-wasm-size.outputs.postgresql_fast_qc_size }}"
compute_diff "postgresql_fast_qc_gz" "${{ needs.base-wasm-size.outputs.postgresql_fast_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.postgresql_fast_qc_size_gz }}"
compute_diff "postgresql_small_qc" "${{ needs.base-wasm-size.outputs.postgresql_small_qc_size }}" "${{ needs.pr-wasm-size.outputs.postgresql_small_qc_size }}"
compute_diff "postgresql_small_qc_gz" "${{ needs.base-wasm-size.outputs.postgresql_small_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.postgresql_small_qc_size_gz }}"
compute_diff "mysql_fast_qc" "${{ needs.base-wasm-size.outputs.mysql_fast_qc_size }}" "${{ needs.pr-wasm-size.outputs.mysql_fast_qc_size }}"
compute_diff "mysql_fast_qc_gz" "${{ needs.base-wasm-size.outputs.mysql_fast_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.mysql_fast_qc_size_gz }}"
compute_diff "mysql_small_qc" "${{ needs.base-wasm-size.outputs.mysql_small_qc_size }}" "${{ needs.pr-wasm-size.outputs.mysql_small_qc_size }}"
compute_diff "mysql_small_qc_gz" "${{ needs.base-wasm-size.outputs.mysql_small_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.mysql_small_qc_size_gz }}"
compute_diff "sqlite_fast_qc" "${{ needs.base-wasm-size.outputs.sqlite_fast_qc_size }}" "${{ needs.pr-wasm-size.outputs.sqlite_fast_qc_size }}"
compute_diff "sqlite_fast_qc_gz" "${{ needs.base-wasm-size.outputs.sqlite_fast_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlite_fast_qc_size_gz }}"
compute_diff "sqlite_small_qc" "${{ needs.base-wasm-size.outputs.sqlite_small_qc_size }}" "${{ needs.pr-wasm-size.outputs.sqlite_small_qc_size }}"
compute_diff "sqlite_small_qc_gz" "${{ needs.base-wasm-size.outputs.sqlite_small_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlite_small_qc_size_gz }}"
compute_diff "sqlserver_fast_qc" "${{ needs.base-wasm-size.outputs.sqlserver_fast_qc_size }}" "${{ needs.pr-wasm-size.outputs.sqlserver_fast_qc_size }}"
compute_diff "sqlserver_fast_qc_gz" "${{ needs.base-wasm-size.outputs.sqlserver_fast_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlserver_fast_qc_size_gz }}"
compute_diff "sqlserver_small_qc" "${{ needs.base-wasm-size.outputs.sqlserver_small_qc_size }}" "${{ needs.pr-wasm-size.outputs.sqlserver_small_qc_size }}"
compute_diff "sqlserver_small_qc_gz" "${{ needs.base-wasm-size.outputs.sqlserver_small_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.sqlserver_small_qc_size_gz }}"
compute_diff "cockroachdb_fast_qc" "${{ needs.base-wasm-size.outputs.cockroachdb_fast_qc_size }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_fast_qc_size }}"
compute_diff "cockroachdb_fast_qc_gz" "${{ needs.base-wasm-size.outputs.cockroachdb_fast_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_fast_qc_size_gz }}"
compute_diff "cockroachdb_small_qc" "${{ needs.base-wasm-size.outputs.cockroachdb_small_qc_size }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_small_qc_size }}"
compute_diff "cockroachdb_small_qc_gz" "${{ needs.base-wasm-size.outputs.cockroachdb_small_qc_size_gz }}" "${{ needs.pr-wasm-size.outputs.cockroachdb_small_qc_size_gz }}"
- name: Find past report comment
uses: peter-evans/find-comment@v3
id: findReportComment
with:
issue-number: ${{ github.event.pull_request.number }}
body-includes: '<!-- wasm-size -->'
- name: Create or update report
uses: peter-evans/create-or-update-comment@v4
# Only run on branches from our repository
# It avoids an expected failure on forks
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
with:
comment-id: ${{ steps.findReportComment.outputs.comment-id }}
issue-number: ${{ github.event.pull_request.number }}
body: |
<!-- wasm-size -->
### Wasm Query Compiler File Size
| Engine | This PR | Base branch | Diff |
|------------------------------------|---------------------------------------------------------|-----------------------------------------------------------|-----------------------------------------------------------|
| Postgres | ${{ steps.compute.outputs.postgresql_fast_qc_pr }} | ${{ steps.compute.outputs.postgresql_fast_qc_base }} | ${{ steps.compute.outputs.postgresql_fast_qc_diff }} |
| Postgres (gzip) | ${{ steps.compute.outputs.postgresql_fast_qc_gz_pr }} | ${{ steps.compute.outputs.postgresql_fast_qc_gz_base }} | ${{ steps.compute.outputs.postgresql_fast_qc_gz_diff }} |
| Postgres (size-optimized) | ${{ steps.compute.outputs.postgresql_small_qc_pr }} | ${{ steps.compute.outputs.postgresql_small_qc_base }} | ${{ steps.compute.outputs.postgresql_small_qc_diff }} |
| Postgres (size-optimized, gzip) | ${{ steps.compute.outputs.postgresql_small_qc_gz_pr }} | ${{ steps.compute.outputs.postgresql_small_qc_gz_base }} | ${{ steps.compute.outputs.postgresql_small_qc_gz_diff }} |
| Mysql | ${{ steps.compute.outputs.mysql_fast_qc_pr }} | ${{ steps.compute.outputs.mysql_fast_qc_base }} | ${{ steps.compute.outputs.mysql_fast_qc_diff }} |
| Mysql (gzip) | ${{ steps.compute.outputs.mysql_fast_qc_gz_pr }} | ${{ steps.compute.outputs.mysql_fast_qc_gz_base }} | ${{ steps.compute.outputs.mysql_fast_qc_gz_diff }} |
| Mysql (size-optimized) | ${{ steps.compute.outputs.mysql_small_qc_pr }} | ${{ steps.compute.outputs.mysql_small_qc_base }} | ${{ steps.compute.outputs.mysql_small_qc_diff }} |
| Mysql (size-optimized, gzip) | ${{ steps.compute.outputs.mysql_small_qc_gz_pr }} | ${{ steps.compute.outputs.mysql_small_qc_gz_base }} | ${{ steps.compute.outputs.mysql_small_qc_gz_diff }} |
| Sqlite | ${{ steps.compute.outputs.sqlite_fast_qc_pr }} | ${{ steps.compute.outputs.sqlite_fast_qc_base }} | ${{ steps.compute.outputs.sqlite_fast_qc_diff }} |
| Sqlite (gzip) | ${{ steps.compute.outputs.sqlite_fast_qc_gz_pr }} | ${{ steps.compute.outputs.sqlite_fast_qc_gz_base }} | ${{ steps.compute.outputs.sqlite_fast_qc_gz_diff }} |
| Sqlite (size-optimized) | ${{ steps.compute.outputs.sqlite_small_qc_pr }} | ${{ steps.compute.outputs.sqlite_small_qc_base }} | ${{ steps.compute.outputs.sqlite_small_qc_diff }} |
| Sqlite (size-optimized, gzip) | ${{ steps.compute.outputs.sqlite_small_qc_gz_pr }} | ${{ steps.compute.outputs.sqlite_small_qc_gz_base }} | ${{ steps.compute.outputs.sqlite_small_qc_gz_diff }} |
| SQL Server | ${{ steps.compute.outputs.sqlserver_fast_qc_pr }} | ${{ steps.compute.outputs.sqlserver_fast_qc_base }} | ${{ steps.compute.outputs.sqlserver_fast_qc_diff }} |
| SQL Server (gzip) | ${{ steps.compute.outputs.sqlserver_fast_qc_gz_pr }} | ${{ steps.compute.outputs.sqlserver_fast_qc_gz_base }} | ${{ steps.compute.outputs.sqlserver_fast_qc_gz_diff }} |
| SQL Server (size-optimized) | ${{ steps.compute.outputs.sqlserver_small_qc_pr }} | ${{ steps.compute.outputs.sqlserver_small_qc_base }} | ${{ steps.compute.outputs.sqlserver_small_qc_diff }} |
| SQL Server (size-optimized, gzip) | ${{ steps.compute.outputs.sqlserver_small_qc_gz_pr }} | ${{ steps.compute.outputs.sqlserver_small_qc_gz_base }} | ${{ steps.compute.outputs.sqlserver_small_qc_gz_diff }} |
| CockroachDB | ${{ steps.compute.outputs.cockroachdb_fast_qc_pr }} | ${{ steps.compute.outputs.cockroachdb_fast_qc_base }} | ${{ steps.compute.outputs.cockroachdb_fast_qc_diff }} |
| CockroachDB (gzip) | ${{ steps.compute.outputs.cockroachdb_fast_qc_gz_pr }} | ${{ steps.compute.outputs.cockroachdb_fast_qc_gz_base }} | ${{ steps.compute.outputs.cockroachdb_fast_qc_gz_diff }} |
| CockroachDB (size-optimized) | ${{ steps.compute.outputs.cockroachdb_small_qc_pr }} | ${{ steps.compute.outputs.cockroachdb_small_qc_base }} | ${{ steps.compute.outputs.cockroachdb_small_qc_diff }} |
| CockroachDB (size-optimized, gzip) | ${{ steps.compute.outputs.cockroachdb_small_qc_gz_pr }} | ${{ steps.compute.outputs.cockroachdb_small_qc_gz_base }} | ${{ steps.compute.outputs.cockroachdb_small_qc_gz_diff }} |
edit-mode: replace