[ Web Proxy ]
URL:
Viewing: https://raw.githubusercontent.com/RustPython/RustPython/0.6.0/.github/workflows/codspeed.yaml [Back]  [Original]

on:
  push:
    branches: [main]
  pull_request:
    types: [unlabeled, opened, synchronize, reopened]
  merge_group:
  # `workflow_dispatch` allows CodSpeed to trigger backtest
  # performance analysis in order to generate initial data.
  workflow_dispatch:

name: CodSpeed

permissions:
  contents: read

concurrency:
  group: ${{ github.workflow }}-${{ github.ref_name }}-${{ github.event.pull_request.number || github.sha }}
  cancel-in-progress: true

env:
  CARGO_INCREMENTAL: 0
  CARGO_TERM_COLOR: always
  CI: true

jobs:
  benchmarks:
    if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip:ci') }}
    name: Run benchmarks
    runs-on: ubuntu-latest
    timeout-minutes: 90
    permissions:
      contents: read
      id-token: write # for OpenID Connect authentication with CodSpeed
    env:
      CACHE_PATHS: |
        # https://doc.rust-lang.org/cargo/guide/cargo-home.html#caching-the-cargo-home-in-ci
        ~/.cargo/.crates2.json
        ~/.cargo/.crates.toml
        ~/.cargo/bin/
        ~/.cargo/registry/index/
        ~/.cargo/registry/cache/
        ~/.cargo/git/db/
        target/
    steps:
      - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
        with:
          persist-credentials: false

      - uses: dtolnay/rust-toolchain@stable

      # The benchmarks are linked against libpython through the pyo3 dev-dependency.
      - uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97 # v7.0.0

      - name: Restore the machine main last measured on
        # A recording that cannot be fetched is read as "none yet", which the step
        # below treats as nothing to disagree with. Failing here instead would
        # turn a cache outage into a red benchmark job.
        continue-on-error: true
        uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
        with:
          path: build/codspeed-environment-reference.json
          key: codspeed-environment-${{ runner.os }}-${{ runner.arch }}-${{ github.run_id }}
          restore-keys: codspeed-environment-${{ runner.os }}-${{ runner.arch }}-

      - name: Name the machine this run drew
        id: environment
        shell: bash
        run: |
          reference=build/codspeed-environment-reference.json
          if [ "$GITHUB_REF" = refs/heads/main ]; then
            args=(--record "$reference")
          else
            args=(--record build/codspeed-environment.json --reference "$reference")
          fi
          python3 scripts/codspeed-environment.py "${args[@]}" --github-output

      - name: Restore cache
        if: ${{ steps.environment.outputs.match != 'false' }}
        uses: actions/cache/restore@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
        with:
          path: ${{ env.CACHE_PATHS }}
          key: codspeed-v2-${{ hashFiles('**/Cargo.lock') }}
          restore-keys: codspeed-v2-
        continue-on-error: true

      - name: Install cargo-codspeed
        if: ${{ steps.environment.outputs.match != 'false' }}
        run: cargo install cargo-codspeed --locked --version ^5

      - name: Build the benchmark targets
        if: ${{ steps.environment.outputs.match != 'false' }}
        run: cargo codspeed build --locked --measurement-mode simulation -p rustpython -p rustpython-sre_engine

      - name: Save cache
        if: ${{ github.ref == 'refs/heads/main' }} # only save on main
        uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
        with:
          path: ${{ env.CACHE_PATHS }}
          key: codspeed-v2-${{ hashFiles('**/Cargo.lock') }}
        continue-on-error: true

      - name: Run the benchmarks
        if: ${{ steps.environment.outputs.match != 'false' }}
        uses: CodSpeedHQ/action@373d6868929f444bc08d901fd0eb0ad52a8875ea # v5.2.1
        with:
          mode: simulation
          run: cargo codspeed run -p rustpython -p rustpython-sre_engine

      - name: Record the machine this baseline was measured on
        if: ${{ success() && github.ref == 'refs/heads/main' }}
        uses: actions/cache/save@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
        with:
          path: build/codspeed-environment-reference.json
          key: codspeed-environment-${{ runner.os }}-${{ runner.arch }}-${{ github.run_id }}

Web Proxy Viewer  |  New URL  |  Original Page