Skip to content

run-tests.yml and test-matrix.yml are duplicate, already-diverged CI pipelines running on identical triggers #133

Description

@morcen

Problem

.github/workflows/run-tests.yml and .github/workflows/test-matrix.yml both trigger on the exact same events:

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

and both run essentially the same job (composer require ... && composer update && vendor/bin/pest), but with matrices that have already diverged:

  • run-tests.yml: php: [8.3, 8.2] × laravel: [11.*, 12.*] × os: [ubuntu-latest, windows-latest, macos-latest] (12 combinations, fail-fast: true)
  • test-matrix.yml: php: [8.4, 8.3, 8.2] × laravel: [11.*] on ubuntu-latest only, plus one bolted-on include entry for Laravel 12.* / PHP 8.3 (4 combinations total, fail-fast: false), and it additionally runs vendor/bin/pint --test as a step gated on matrix.php == '8.3' && matrix.laravel == '11.*'.

Where

  • .github/workflows/run-tests.yml
  • .github/workflows/test-matrix.yml

Why it matters

Every push and PR to main runs both pipelines in full, roughly doubling CI minutes for largely redundant coverage, and the two matrices have already drifted apart in ways that are easy to miss: test-matrix.yml is the only place PHP 8.4 is tested at all (relevant to #86, which asks to extend the matrix to 8.4/8.5 — but that extension already exists here, just not in the "main" run-tests.yml workflow, and not on Windows/macOS), and Pint style checks only run from test-matrix.yml, not run-tests.yml. A contributor looking at run-tests.yml alone would reasonably assume it's the full test matrix and miss that style checks and PHP 8.4 coverage live in a separate, easily-overlooked file. This is a distinct problem from #86 (extending PHP version coverage) — the issue here is the redundant/duplicated pipeline structure itself.

Suggested fix

Consolidate into a single workflow with one matrix definition covering the intended full OS × PHP × Laravel cross-product (including the Pint step), removing the duplicate trigger and the resulting doubled CI cost. If a genuine reason exists to keep them separate (e.g. one is meant to be a fast smoke test and the other a full matrix), rename and scope them accordingly and document the distinction, since right now they read as two people having built the same thing independently.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    tech-debtFrom the technical debt register

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions