Règles mécaniques — s'appliquent automatiquement
name_capitalized
- Déclencheur : Une valeur
name:au niveau workflow ou job ne commence pas par une majuscule. - Correction : Mettez en majuscule le premier caractère de la valeur name. Ne changez rien d'autre.
permissions_exist
- Déclencheur : Un workflow ou job ne possède pas de clé
permissions:explicite. - Correction : Ajoutez
permissions: {}au niveau workflow si tous les jobs en manquent, ou au niveau job individuel si seuls certains jobs en manquent. Préférez les permissions au niveau job.
pinned_job_runner
- Déclencheur : Le
runs-on:d'un job utilise un label non épinglé. - Correction : Remplacez par l'équivalent épinglé actuel :
ubuntu-latest→ubuntu-24.04windows-latest→windows-2022macos-latest→macos-14
step_pinned
- Déclencheur : Une référence
uses:n'est pas épinglée à un SHA de commit complet (par ex., utilise un tag comme@v3ou une branche comme@main). - Correction :
- Résolvez le SHA de commit correct via l'API GitHub :
gh api repos/{owner}/{repo}/commits/{ref} --jq '.sha' - Affichez le SHA et un lien de vérification (
https://github.com/{owner}/{repo}/commit/{sha}) à l'utilisateur avant d'appliquer. - Attendez la confirmation de l'utilisateur. S'il fournit un SHA différent, utilisez celui-ci à la place.
- Remplacez la valeur
uses:par{action}@{sha}et ajoutez un commentaire avec le tag original :# {original-ref}
- Exemple :
uses: actions/checkout@v4→uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4
- Résolvez le SHA de commit correct via l'API GitHub :
underscore_outputs
- Déclencheur : Un nom de sortie multi-mots dans une écriture
$GITHUB_OUTPUTou un blocoutputs:utilise des tirets ou du camelCase au lieu de tirets bas. - Correction : Renommez la clé de sortie pour utiliser des tirets bas. Mettez à jour toutes les références à cette sortie dans le même fichier.
job_environment_prefix
- Déclencheur : Un nom de variable d'environnement au niveau job ne suit pas
SCREAMING_SNAKE_CASE. - Correction : Renommez en
SCREAMING_SNAKE_CASEet mettez à jour tous les usages au sein du job.
check_pr_target
- Déclencheur : Un workflow utilisant
pull_request_targetpossède des jobs non restreints à la branche par défaut. - Correction : Ajoutez une condition aux jobs affectés :
if: github.ref == 'refs/heads/<default-branch>'. Déterminez la branche par défaut du repo plutôt que de supposermain. Si le job possède déjà une conditionif:, combinez avec&&(par ex.,if: <existing-condition> && github.ref == 'refs/heads/<default-branch>').
Règles de jugement — pause et demandez à l'utilisateur
name_exists
- Déclencheur : Un workflow ou job ne possède pas de clé
name:du tout. - Correction : Demandez à l'utilisateur quel nom utiliser, puis ajoutez une clé
name:au niveau approprié avec une valeur en majuscule.
step_approved
- Déclencheur : Le
uses:d'une étape référence une action ne figurant pas sur la liste des actions approuvées par Bitwarden. - Options à présenter à l'utilisateur :
- Ajouter à la liste approuvée — si l'action est légitime et a été examinée et approuvée, ajoutez-la à la configuration des actions approuvées de
bitwarden/workflow-linter. - Remplacer — échangez avec une alternative approuvée qui fournit la même fonctionnalité.
- Supprimer — supprimez l'étape si elle n'est pas essentielle.
- Ajouter à la liste approuvée — si l'action est légitime et a été examinée et approuvée, ajoutez-la à la configuration des actions approuvées de
- Ne faites pas cette modification automatiquement. Affichez le nom de l'action non approuvée, demandez quelle option l'utilisateur souhaite, puis agissez.
run_actionlint (résultats complexes)
- Déclencheur :
actionlintsignale une erreur qui n'est pas un simple problème de formatage (par ex., des incompatibilités de type dans les expressions, des références de contexte invalides, des erreurs de script shell). - Action : Affichez le résultat tel quel, suggérez une correction basée sur le message d'actionlint, et demandez à l'utilisateur de confirmer avant d'appliquer.
- Les résultats simples d'actionlint (par ex., des avertissements de style
shellcheckavec un correctif clair sur une seule ligne) peuvent être appliqués automatiquement.