pola-rs/polars GitHub Actions scorecardPublic GitHub Actions data, last 30 days. Updated .
Data sourced from public GitHub. GitSpider is not affiliated with or endorsed by this repository's owners. Request removal.
Biggest wins first, each with the exact config fix.
Build Python documentationSet `cache: 'pip'` on your `actions/setup-python` step, or add an `actions/cache@v4` step keyed on your requirements/lock file.
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'Build Python documentationConcurrency group has no `cancel-in-progress: true`, so superseded runs queue instead of cancelling. Add it to supersede stale runs.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueBuild Rust documentationConcurrency group has no `cancel-in-progress: true`, so superseded runs queue instead of cancelling. Add it to supersede stale runs.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: trueLint PythonSet `cache: 'pip'` on your `actions/setup-python` step, or add an `actions/cache@v4` step keyed on your requirements/lock file.
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'changes-dsl labelerAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: truePull request labelerAdd a `concurrency:` block keyed on branch to cancel superseded runs when devs push twice quickly.
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: truePull request labelerNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Update draft releasesNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Test PythonNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Test PythonmacOS bills ~10x and Windows ~2x a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestLint PythonNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Lint globalNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Lint globalRuns on every push/PR with no `paths:` filter, so docs-only changes still trigger full CI. Add a `paths:` filter if that's common.
on:
pull_request:
paths:
- 'src/**'
- 'package.json'Lint globalSystem packages install from the network on every run with no cache. Cache them (cache-apt-pkgs-action) or check whether the runner image already has the tool.
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: <your packages>
version: 1.0BenchmarkNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Build Python documentationNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Build Rust documentationNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Lint RustNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Lint Rust1 third-party action pinned to a branch or other mutable ref, which can change under you (supply-chain risk, non-reproducible builds). Pin to a full commit SHA instead. (3 more on a major-version tag like @v4; consider full-SHA pinning there too.)
uses: taiki-e/install-action@<full-sha> # was @cargo-denyTest RustNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Test RustmacOS bills ~10x and Windows ~2x a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestTest Bytecode ParserNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Code coverageNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Code coverage`upload-artifact` has no `retention-days`, so artifacts keep up to 90 days (storage cost). Set e.g. `retention-days: 7`.
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7Code coveragemacOS bills ~10x and Windows ~2x a Linux minute. The cost estimate above assumes Linux, so your real spend is higher. Move any job that doesn't need them to `ubuntu-latest`.
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latestCode coverageSystem packages install from the network on every run with no cache. Cache them (cache-apt-pkgs-action) or check whether the runner image already has the tool.
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: <your packages>
version: 1.0Code coverage2 third-party actions pinned to a branch or other mutable ref, which can change under you (supply-chain risk, non-reproducible builds). Pin to a full commit SHA instead. (3 more on a major-version tag like @v4; consider full-SHA pinning there too.)
uses: taiki-e/install-action@<full-sha> # was @cargo-llvm-covRemote BenchmarkNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15changes-dsl labelerNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15Issue labelerNo job sets `timeout-minutes`, so a hung step can run to GitHub's 6-hour default. Add `timeout-minutes` to each job.
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15# Missing dependency cache (pip) (applies to: Build Python documentation, Lint Python)
- uses: actions/setup-python@v5
with:
python-version: '3.12'
cache: 'pip'
# Concurrency without cancel-in-progress (applies to: Build Python documentation, Build Rust documentation)
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# No concurrency control (applies to: changes-dsl labeler, Pull request labeler)
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
# No job timeout (applies to: Pull request labeler, Update draft releases, Test Python, Lint Python, Lint global, Benchmark, Build Python documentation, Build Rust documentation, Lint Rust, Test Rust, Test Bytecode Parser, Code coverage, Remote Benchmark, changes-dsl labeler, Issue labeler)
jobs:
build:
runs-on: ubuntu-latest
timeout-minutes: 15
# Premium runners (macOS / Windows) (applies to: Test Python, Test Rust, Code coverage)
jobs:
build:
runs-on: ubuntu-latest # ~10x cheaper than macos-latest
# No path filters on triggers (applies to: Lint global)
on:
pull_request:
paths:
- 'src/**'
- 'package.json'
# System packages reinstalled every run (applies to: Lint global, Code coverage)
- uses: awalsh128/cache-apt-pkgs-action@latest
with:
packages: <your packages>
version: 1.0
# Third-party actions pinned to a mutable ref (applies to: Lint Rust)
uses: taiki-e/install-action@<full-sha> # was @cargo-deny
# Artifacts at default retention (applies to: Code coverage)
- uses: actions/upload-artifact@v4
with:
name: build
path: dist/
retention-days: 7
# Third-party actions pinned to a mutable ref (applies to: Code coverage)
uses: taiki-e/install-action@<full-sha> # was @cargo-llvm-covEach snippet is representative. Merge into the named workflow files rather than pasting wholesale.
This scorecard is a one-time snapshot. Install the free GitHub App to track this repo continuously: new regressions caught as they land, trends over time, on your public and private repos. Team adds the offending commit on the PR + Slack alerts.
Install & monitor this repo →💬 On Team, this same analysis posts automatically to every PR: the regression, and the exact commit that caused it, right where your team already looks. See plans →
Not ready to install? Get this report by email. No spam, unsubscribe anytime.