Skip to main content

Résolution des problèmes de règles

Découvrez comment résoudre les problèmes d’ensembles de règles lorsque vous contribuez à un dépôt.

Qui peut utiliser cette fonctionnalité ?

Les ensembles de règles sont disponibles dans les dépôts publics avec GitHub Free et GitHub Free pour les organisations, et dans les dépôts publics et privés avec GitHub Pro, GitHub Team et GitHub Enterprise Cloud. Pour plus d’informations, consultez « Plans de GitHub ».

Les ensembles de règles de poussée sont disponibles pour le plan GitHub Enterprise Cloud dans les référentiels internes et privés, les fourches de référentiels dont les ensembles de règles de poussée sont activés, et les organisations de votre entreprise.

Dépannage des ensembles de règles

Si vous ne pouvez pas effectuer d’action dans un dépôt et que vous souhaitez savoir pourquoi, vous pouvez afficher les ensembles de règles actifs ciblant la branche ou l’étiquette avec laquelle vous travaillez. Pour plus d’informations, consultez « Gestion des ensembles de règles d’un dépôt ».

Selon les règles qui sont actives, vous devrez peut-être modifier votre historique de commit localement avant de pouvoir pousser vos commits vers la branche distante. Par exemple, si une branche nécessite que les commits soient signés, vous pouvez mettre à jour vos paramètres de signature, puis utiliser un rebasage interactif sur votre branche locale pour réécrire votre historique Git avec des commits signés. Pour plus d’informations, consultez « Règles disponibles pour les ensembles de règles » et « Utilisation du rebasage Git en ligne de commande ».

Si une branche ou une étiquette est ciblée par des règles limitant les métadonnées des commits, vos commits peuvent être rejetés si une partie des métadonnées des commits ne correspond pas à un certain modèle. Par exemple, vous devrez peut-être ajouter un numéro de problème au début de votre message de commit, ou changer le nom d’une nouvelle branche ou d’une nouvelle étiquette que vous essayez de pousser vers le dépôt. Si vos commits sont rejetés, vous voyez un message vous indiquant que le modèle auquel les métadonnées pertinentes doivent correspondre. Comme avec les commits signés, vous devrez peut-être effectuer un rebasage pour effectuer un squash des commits ou réécrire chaque commit individuellement. Pour plus d’informations, consultez « Règles disponibles pour les ensembles de règles ».

Dépannage des flux de travail des ensembles de règles

Les flux de travail des jeux de règles peuvent être configurés au niveau de l'organisation pour exiger que les flux de travail soient transférés avant de fusionner les demandes de tirage. Pour plus d’informations, consultez « Création des ensembles de règles pour les référentiels de votre organisation ».

Flux de travail de l’ensemble de règles pour les demandes de tirage ouvertes

Si vous créez une règle alors qu'une demande de tirage est ouverte, le flux de travail requis ne s'exécutera pas automatiquement. Pour déclencher le flux de travail requis, ajoutez un nouveau commit, mettez à jour votre branche, ou fermez et rouvrez la demande de tirage.

Événements de flux de travail de l'ensemble de règles pris en charge

Les flux de travail des jeux de règles prennent en charge l'utilisation de pull_request, pull_request_target, et d'événements merge_group. Par conséquent, vous devez spécifier un ou plusieurs de ces événements dans la section on: du flux de travail pour que le flux de travail soit exécuté par un jeu de règles.

Tous les filtres que vous spécifiez pour les événements pris en charge sont ignorés, par exemple, branches, branches-ignore, paths, types et ainsi de suite. Le flux de travail n'est déclenché, et est toujours déclenché, que par les types d'activité par défaut des événements pris en charge.

ÉvénementTypes d’activités par défaut
pull_requestopened, synchronize, reopened
pull_request_targetopened, synchronize, reopened
merge_groupchecks_requested

Pour plus d’informations, consultez « Événements qui déclenchent des flux de travail ».

Les flux de travail des ensembles de règles ne s'exécutent pas sur les événements déclenchés par GITHUB_TOKEN. Pour plus d’informations, consultez « Authentification par jeton automatique ».

Blocage de la création du référentiel

Un flux de travail requis peut empêcher la création d’un référentiel, car un flux de travail ne peut pas s'exécuter sur un référentiel initialisé. Pour contourner ce problème, l'ensemble de règles doit avoir « Évaluer » comme état de mise en œuvre, ou une personne disposant des autorisations de contournement doit créer le référentiel et contourner la protection des branches.

Pour plus d'informations sur les statuts de mise en œuvre et le mode « Évaluer », consultez « Création d’un ensemble de règles pour un dépôt ».

Pour plus d’informations sur les autorisations de contournement, consultez « À propos des branches protégées ».

Cibles de branche dans un ensemble de règles

Vérifiez que le flux de travail de votre ensemble de règles ne cible pas toutes les branches du référentiel. Il ne doit cibler que les branches pour lesquelles toutes les modifications sont effectuées par des demandes de tirage.

Répertoire pris en charge

Vérifiez que votre fichier de flux de travail existe dans le répertoire .github/workflows. Si vous souhaitez exécuter un flux de travail d'ensemble de règles sur des événements pull_request dans un référentiel qui n'est pas le référentiel source, vous pouvez effectuer l'une des actions suivantes :

Utilisation du déclencheur merge_group

Si votre référentiel utilise GitHub Actions pour effectuer des vérifications requises ou si vous avez besoin de workflows via des ensembles de règles d’organisation sur les demandes de tirage dans votre référentiel, vous devez mettre à jour les workflows pour inclure l’événement merge_group en tant que déclencheur supplémentaire. Autrement, les vérifications d’état ne seront pas déclenchées lorsque vous ajouterez une demande de tirage à une file d’attente de fusion. La fusion échouera, car la vérification d’état requise ne sera pas signalée. L’événement merge_group est distinct des événements pull_request et push.

Autorisations du référentiel source

Vérifiez que les autorisations du référentiel source sont définies sur « Accessible à partir de référentiels dans l’organisation ORGANIZATION NAME ».

Pour plus d’informations, consultez « Gestion des paramètres de GitHub Actions pour un dépôt ».

Paramètres de confidentialité du référentiel source

Vérifiez que le fichier de flux de travail de l'ensemble de règles se trouve dans un référentiel source dont les paramètres de confidentialité sont identiques ou moins restrictifs que ceux des référentiels dans lesquels vous souhaitez l'exécuter. En clair, un flux de travail public peut s'exécuter sur n'importe quel référentiel de votre organisation, tandis qu'un flux de travail interne peut s'exécuter sur des référentiels internes et privés, et qu'un flux de travail privé peut s'exécuter sur des référentiels privés. Pour plus d’informations, consultez « À propos des workflows ».

Autorisations pour la création d’un référentiel

Pour créer un référentiel lorsqu’un flux de travail d’ensemble de règles est configuré, vérifiez que vous disposez d’autorisations de contournement pour votre ensemble de règles. Pour plus d’informations, consultez « Création d’un ensemble de règles pour un dépôt ».

Aperçus des règles

GitHub ne journalise pas les aperçus règles jusqu'à ce qu'une demande de tirage soit fusionnée ou qu'une fusion soit tentée.

Concurrence

Vérifiez que le flux de travail de votre ensemble de règles n'utilise pas le paramètre de concurrence cancel-in-progress. Pour en savoir plus sur la concurrence, consultez « Utilisation de l’accès concurrentiel ».