diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 00000000..fabc2f8a --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,59 @@ +name: Benchmark + +on: + pull_request: + push: + branches: ["main"] + +jobs: + benchmark: + name: Performance regression check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-go@v4 + with: + go-version: "stable" + + # Run benchmark with `go test -bench` and stores the output to a file + - name: Run benchmark + run: go test -bench 'BenchmarkFib' | tee output.txt + + # Download previous benchmark result from cache (if exists) + - name: Download previous benchmark data + uses: actions/cache@v4 + with: + path: ./cache + key: ${{ runner.os }}-benchmark + + # # Run `github-action-benchmark` action + # - name: Store benchmark result + # uses: benchmark-action/github-action-benchmark@v1 + # with: + # name: Go Benchmark + # # What benchmark tool the output.txt came from + # tool: 'go' + # # Where the output from the benchmark tool is stored + # output-file-path: ./output.txt + # github-token: ${{ secrets.GITHUB_TOKEN }} + # auto-push: true + # # Show alert with commit comment on detecting possible performance regression + # alert-threshold: '200%' + # comment-on-alert: true + # # Workflow will fail when an alert happens + # fail-on-alert: true + + # # Upload the updated cache file for the next job by actions/cache + # - name: Store benchmark result - separate results repo + # uses: benchmark-action/github-action-benchmark@v1 + # with: + # name: Go Benchmark + # tool: 'go' + # output-file-path: ./output.txt + # github-token: ${{ secrets.BENCHMARK_ACTION_BOT_TOKEN }} + # auto-push: true + # # Show alert with commit comment on detecting possible performance regression + # alert-threshold: '200%' + # comment-on-alert: true + # fail-on-alert: true + # gh-repository: 'github.com/go-fuego/fuego' \ No newline at end of file