carthage-software/mago
Mago is an extremely fast PHP linter, formatter, and static analyzer written in Rust. It helps teams catch issues early, enforce consistent style, and improve code quality across projects, with multiple install options like script, Homebrew, Composer, and Cargo.
+++ title = "Recette GitHub Actions" description = "Lancer le formatage, le linting et l'analyse à chaque push et chaque pull request." nav_order = 50 nav_section = "Recettes" +++
Un workflow simple qui lance le formateur, le linter et l'analyseur à chaque push et chaque pull request, avec des annotations natives sur les PR.
Créez .github/workflows/mago.yml :
name: Mago Code Quality
on:
push:
pull_request:
jobs:
mago:
name: Run Mago Checks
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Set up Mago
uses: nhedger/setup-mago@v2
- name: Check formatting
run: mago format --check
- name: Lint
if: success() || failure()
run: mago lint
- name: Analyze
if: success() || failure()
run: mago analyze
Quelques notes sur la structure :
format, lint et analyze en étapes distinctes fait remonter les résultats des trois, même quand une étape antérieure échoue. Un seul run: combiné ferait court-circuit au premier échec et masquerait le reste.if: success() || failure() lance l'étape quand le job n'a pas été annulé, ce qui est ce que vous voulez ici. always() la lancerait aussi après des échecs de setup.mago format --check, pas --dry-run. --check quitte avec un code non nul quand des fichiers ont besoin d'être formatés ; --dry-run n'affiche qu'un diff et quitte toujours zéro.GITHUB_ACTIONS et bascule automatiquement sur --reporting-format=github, produisant des annotations natives sur les PR. Aucune configuration supplémentaire requise. Sur 1.17.0 et antérieur, vous devez passer --reporting-format=github à mago lint et mago analyze manuellement.Si vous préférez ne pas installer Mago sur le runner, lancez l'image Docker officielle en tant que job conteneur :
name: Mago Code Quality
on:
push:
pull_request:
jobs:
mago:
name: Run Mago Checks
runs-on: ubuntu-latest
container:
image: ghcr.io/carthage-software/mago:1
steps:
- name: Checkout
uses: actions/checkout@v6
- name: Check formatting
run: mago fmt --check
- name: Lint
if: success() || failure()
run: mago lint
- name: Analyze
if: success() || failure()
run: mago analyze
L'image n'inclut pas PHP ni Composer. Cela fonctionne très bien pour le formateur et le linter, mais l'analyseur a besoin des dépendances Composer pour résoudre les symboles. Pour l'analyse, préférez l'approche setup-mago avec composer install exécuté en premier.
How can I help you explore Laravel packages today?