name: "Minimal Continuous Benchmark"
on:
  push:
    branches:
      - main
  pull_request:
    # The branches below must be a subset of the branches above
    branches: [main]

permissions: read-all

jobs:
  benchmark:
    name: Performance regression check
    runs-on: ubuntu-latest-8-cores
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-go@v5
        with:
          cache: false
          go-version: 1.22.x
      # Run benchmark with `go test -bench` and stores the output to a file
      - name: Run benchmark
        run: make BENCH_OUTPUT=ci-cd run-bench
      # Download previous benchmark result from cache (if exists)
      - name: Download previous benchmark data
        uses: actions/cache@v4
        with:
          path: ./cache
          key: ${{ runner.os }}-gen1-benchmark
      # Run `github-action-benchmark` action
      - name: Store benchmark result
        uses: benchmark-action/github-action-benchmark@v1.20.3
        with:
          # What benchmark tool the output.txt came from
          tool: 'customBiggerIsBetter'
          # Where the output from the benchmark tool is stored
          output-file-path: ci-cd.json
          # 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: true
      # Upload the updated cache file for the next job by actions/cache
