Redundant steps across jobs

Rule ID

redundant_steps

Category

energy

Severity

medium

Identical setup steps (checkout, dependency install) are duplicated across jobs without using reusable workflows or job outputs.

Detection

heuristic — Structural comparison across multiple jobs or steps.

Examples

Non-compliant:

jobs:
  test:
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm test
  lint:
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm run lint
  build:
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
      - run: npm run build

Compliant:

jobs:
  test:
    uses: ./.github/workflows/reusable-node.yml
    with: {script: npm test}
  lint:
    uses: ./.github/workflows/reusable-node.yml
    with: {script: npm run lint}
  build:
    uses: ./.github/workflows/reusable-node.yml
    with: {script: npm run build}

Fix: Extract shared setup into a reusable workflow or composite action so the checkout and setup steps run once rather than being duplicated across jobs.