-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Separate benchmarks into their own workflow (#2944)
* Separate benchmarks into their own workflow This change enables us to only run benchmarks on PRs that change files relevant to the benchmarks
- Loading branch information
1 parent
8d3bbec
commit 4581dc8
Showing
2 changed files
with
302 additions
and
242 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,302 @@ | ||
name: Benchmarks | ||
|
||
on: | ||
workflow_dispatch: | ||
pull_request: | ||
branches: | ||
- '**' | ||
paths: | ||
- 'src/**.js' | ||
push: | ||
branches: | ||
- master | ||
- restructure | ||
paths: | ||
- 'src/**.js' | ||
|
||
jobs: | ||
prepare: | ||
name: Prepare benchmarks | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- name: Cache node modules | ||
uses: actions/cache@v1 | ||
env: | ||
cache-name: cache-node-modules | ||
with: | ||
path: ~/.npm | ||
# This uses the same name as the build-action so we can share the caches. | ||
key: ${{ runner.os }}-build-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} | ||
restore-keys: | | ||
${{ runner.os }}-build-${{ env.cache-name }}- | ||
${{ runner.os }}-build- | ||
${{ runner.os }}- | ||
- run: npm ci | ||
- name: Package | ||
# Use --ignore-scripts here to avoid re-building again before pack | ||
run: | | ||
npm pack --ignore-scripts | ||
mv preact-*.tgz preact.tgz | ||
tar -xzf preact.tgz | ||
- name: Upload build output | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: build-output | ||
path: package/ | ||
- uses: andrewiggins/download-base-artifact@v1 | ||
with: | ||
artifact: npm-package | ||
workflow: ci.yml | ||
required: false | ||
- name: Upload base preact package | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: build-output | ||
path: preact.tgz | ||
- name: Initialize Tachometer Results Report | ||
uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
initialize: true | ||
|
||
bench_text_update: | ||
name: Bench text_update | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 10 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench text_update.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/text_update.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/text_update.json | ||
report-id: text_update | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local | ||
|
||
bench_many_updates: | ||
name: Bench many_updates | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 10 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench many_updates.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/many_updates.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/many_updates.json | ||
report-id: many_updates | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local | ||
|
||
bench_02_replace1k: | ||
name: Bench 02_replace1k | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 10 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench 02_replace1k.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/02_replace1k.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/02_replace1k.json | ||
report-id: 02_replace1k | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local | ||
summarize: 'duration, usedJSHeapSize' | ||
|
||
bench_03_update10th1k_x16: | ||
name: Bench 03_update10th1k_x16 | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 10 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench 03_update10th1k_x16.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/03_update10th1k_x16.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/03_update10th1k_x16.json | ||
report-id: 03_update10th1k_x16 | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local | ||
|
||
bench_07_create10k: | ||
name: Bench 07_create10k | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 20 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench 07_create10k.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/07_create10k.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/07_create10k.json | ||
report-id: 07_create10k | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local | ||
|
||
bench_hydrate1k: | ||
name: Bench hydrate1k | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 20 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench hydrate1k.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/hydrate1k.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/hydrate1k.json | ||
report-id: hydrate1k | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local | ||
|
||
bench_filter_list: | ||
name: Bench filter_list | ||
runs-on: ubuntu-latest | ||
needs: prepare | ||
timeout-minutes: 10 | ||
steps: | ||
- uses: actions/checkout@v2 | ||
- uses: actions/setup-node@v1 | ||
with: | ||
node-version: '14.x' | ||
- uses: actions/download-artifact@v2 | ||
with: | ||
name: build-output | ||
- name: install & build | ||
run: | | ||
cd benches | ||
npm ci | ||
- name: bench | ||
run: | | ||
export CHROMEDRIVER_FILEPATH=$(which chromedriver) | ||
cd benches | ||
npm run bench filter_list.html | ||
- name: Upload results | ||
uses: actions/upload-artifact@v2 | ||
with: | ||
name: results | ||
path: benches/results/filter_list.json | ||
- uses: andrewiggins/tachometer-reporter-action@v2 | ||
with: | ||
path: benches/results/filter_list.json | ||
report-id: filter_list | ||
base-bench-name: preact-master | ||
pr-bench-name: preact-local |
Oops, something went wrong.