
GitHub Actions : linter et corriger vos workflows YAML
YAML cassé, `on` ou `jobs` manquants, steps vides : validez la structure de vos workflows avant le push — et laissez actionlint à la CI.
Pourquoi contrôler un workflow avant de merger sur main ?
Un fichier .github/workflows/*.yml qui ne parse pas, ou un job sans runs-on, ne se voit souvent qu'après le push : pastille rouge, logs GitHub, revue bloquée. FastMinify n'embarque pas actionlint. Le validateur GitHub Actions fait des contrôles structurels dans le navigateur — on, jobs, steps avec run ou uses — et le formateur GitHub Actions réindente le YAML (convention 2 espaces). Le cluster complet est sur le hub outils CI/CD. Pour automatiser minify JS/CSS dans la pipeline, voir le guide minification CI/CD.
Anatomie d'un workflow : ce que FastMinify vérifie (et ce qu'il ne vérifie pas)
Un workflow est un document YAML unique. GitHub exige un déclencheur on et une map jobs. Chaque job a besoin d'un runner (runs-on), d'un workflow réutilisable (uses), ou d'une liste steps. Chaque step doit définir run ou uses.
--- répétés) sont rejetésuses sans steps est accepté ; le YAML imbriqué n'est pas inspecté en profondeurjobs vide ou une liste steps vide produit un avertissement, pas forcément une erreur bloquanteon après un parse réussiFastMinify expose deux outils. Ni l'un ni l'autre n'est actionlint. Confondre les trois mène à des workflows « valides » qui cassent quand même en CI.
Avant
Après
js-yaml, indentation 2 espaces (convention GitHub) — voir format-github-actionson / jobs / steps — voir validate-github-actions${{ }}, permissions, IDs, lookup d'actions — à lancer en CI, pas dans FastMinifyactions/checkout@v4 existe ni que l'expression est sûreInterpoler un contexte non fiable (github.event.issue.title, un label de PR) directement dans run: est un classique d'injection de script. FastMinify n'évalue pas les expressions et ne signale pas ce motif.
env:, pas en interpolation dans le scriptpermissions: au minimum (contents, pull-requests)run ou uses — même si le script est dangereuxValider puis formater : un workflow concret
Ouvrez le validateur GitHub Actions, collez un seul fichier workflow (max 512 Kio) et attendez le debounce (~300 ms). Le panneau affiche un verdict, les issues avec un indice de ligne sur les erreurs de parse, et des compteurs jobs/steps/triggers. Un champ vide reste inactif — pas « invalide ».
Le formateur GitHub Actions pretty-print via js-yaml. Collage, upload ou sample : format automatique ; après une édition manuelle, utilisez le bouton Formater (⌘↵). L'indentation UI suit la convention 2 espaces. Ce n'est pas un réécrivain sémantique.
Un collègue a ajouté - name: empty step sans script. La CI échoue tard, avec un message GitHub peu lisible dans l'overlay de PR.
Étape 1 : coller le workflow dans validate-github-actions
Ouvrez validate-github-actions. Un verdict invalide du type « step needs run or uses » pointe le step vide.
Étape 2 : ajouter run ou uses
Remplacez le step par uses: actions/checkout@v4 ou un run: réel. Recollez jusqu'à ce que le panneau affiche une structure valide.
Étape 3 : formater et ouvrir la PR
Passez le YAML corrigé dans format-github-actions, copiez, commitez. Les reviewers lisent des jobs indentés, pas un blob.
Un exemple copié depuis la doc GitHub ou un gist arrive avec un mélange d'espaces. Vous ne voyez plus où finit un job.
Étape 1 : formater d'abord si le fichier est illisible
Collez dans format-github-actions. Cette étape ne prouve pas que le workflow est structurellement complet.
Étape 2 : valider le document indenté
Copiez la sortie dans le validateur. Vérifiez on, jobs et que chaque step a une action.
Étape 3 : garder actionlint pour la CI
Une fois la forme OK, le filet expressions / IDs / marketplace reste en pipeline — FastMinify ne le remplace pas.
Garder actionlint (et minify) dans la CI
Le navigateur sert la boucle rapide avant git push. Les équipes gardent actionlint comme gate de merge pour les expressions ${{ }} et les règles que FastMinify n'implémente pas. L'exemple suit le script officiel de téléchargement actionlint : pinnez une version dans votre repo plutôt qu'un main flottant. Pour minifier JS/CSS dans la même pipeline, voir le guide minification CI/CD.
Exemple de base
Si le dépôt est sur GitLab, les pendants sont format-gitlab-ci et validate-gitlab-ci — même idée (YAML + structure, pas un runner). Dockerfile et Compose restent sur le hub DevOps : linter un Dockerfile, valider Compose et .env.
Conclusion
Collez le workflow, corrigez la structure (on, jobs, steps), reformatez l'indentation, puis poussez. FastMinify fait cette boucle en local, sans envoyer le YAML. Ce n'est pas actionlint : expressions, permissions avancées et existence des actions restent en CI et en revue. Pour du YAML générique, restez sur beautify-yaml ; pour GitLab, sur le même hub CI/CD.
Articles connexes

Erreurs de syntaxe SDL, review de schéma et formatage avant merge — complément au beautify GraphQL existant.

Réduisez la facture OpenAI/Anthropic/Gemini : estimez input/output, activez batch et caching dans vos calculs — tarifs vérifiés, 100 % local.

RAG, agents multi-tours, system prompts : calculez le % de fenêtre utilisée et la marge restante avant d'envoyer à l'API.