aboutsummaryrefslogtreecommitdiffstats
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/benchmark.yml47
1 files changed, 47 insertions, 0 deletions
diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml
new file mode 100644
index 00000000..7005b089
--- /dev/null
+++ b/.github/workflows/benchmark.yml
@@ -0,0 +1,47 @@
+name: Benchmarks
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - master
+
+permissions:
+ # deployments permission to deploy GitHub pages website
+ deployments: write
+ # contents permission to update benchmark contents in gh-pages branch
+ contents: write
+
+jobs:
+ benchmark:
+ name: Performance regression check
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v2
+ - uses: actions/setup-go@v1
+ # Run benchmark with `go test -bench` and stores the output to a file
+ - name: Run benchmark
+ run: go test -v ./... -bench=. -run=xxx -benchmem | tee output.txt
+ # Download previous benchmark result from cache (if exists)
+ - name: Download previous benchmark data
+ uses: actions/cache@v1
+ with:
+ path: ./cache
+ key: ${{ runner.os }}-benchmark
+ # Run `github-action-benchmark` action
+ - name: Store benchmark result
+ uses: benchmark-action/github-action-benchmark@v1
+ with:
+ # What benchmark tool the output.txt came from
+ tool: 'go'
+ # Where the output from the benchmark tool is stored
+ output-file-path: output.txt
+ # Where the previous data file is stored
+ external-data-json-path: ./cache/benchmark-data.json
+ # Workflow will fail when an alert happens
+ fail-on-alert: false
+ # GitHub API token to make a commit comment
+ github-token: ${{ secrets.GITHUB_TOKEN }}
+ # Enable alert commit comment
+ comment-on-alert: true
+ # Push and deploy GitHub pages branch automatically
+ auto-push: true