name: CodSpeed

on:
  push:
    branches:
      - main
  pull_request:
  workflow_dispatch:

permissions:
  contents: read # Check out the repository and its submodules
  id-token: write # Authenticate result uploads to CodSpeed via OIDC

jobs:
  benchmarks:
    name: Run benchmarks
    runs-on: ${{ vars.CODSPEED_RUNS_ON }}

    steps:
      - name: Checkout repository
        uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          submodules: recursive
          persist-credentials: false

      - name: Set up Node.js
        uses: actions/setup-node@949feb2413d6458794dcd2491c4babbbce0c15c1 # v7.1.0
        with:
          node-version-file: .nvmrc
          cache: npm

      - name: Build benchmarks
        run: make benchmark-build

      - name: Run benchmarks
        uses: CodSpeedHQ/action@61efe07e57e55bedeab750c434504de272a56e8c # v5.6.1
        with:
          mode: ${{ vars.CODSPEED_MODE }}
          run: make benchmark-run
