Skip to main content

Création d’un ensemble de règles pour un dépôt

Vous pouvez ajouter des ensembles de règles à un dépôt pour contrôler la façon dont les utilisateurs peuvent interagir avec des branches et des étiquettes spécifiques.

Qui peut utiliser cette fonctionnalité ?

Toute personne disposant d’un accès en lecture à un dépôt peut voir les ensembles de règles du dépôt. Les personnes avec un accès administrateur à un dépôt, ou avec un rôle personnalisé avec l’autorisation « modifier les règles du dépôt », peuvent créer, modifier et supprimer des ensembles de règles pour un dépôt.

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 Team dans les référentiels internes et privés, et les fourches de référentiels dont les ensembles de règles de poussée sont activés.

Introduction

Vous pouvez créer des ensembles de règles pour contrôler la façon dont les utilisateurs peuvent interagir avec une sélection de branches et d’étiquettes dans un dépôt. Vous pouvez contrôler par exemple qui peut pousser les commits vers une certaine branche, la façon dont les commits doivent être mis en forme, ou qui peut supprimer ou renommer une étiquette. Vous pouvez également empêcher les utilisateurs de renommer les dépôts.

Vous pouvez également créer des ensembles de règles de poussée pour bloquer les poussées vers un référentiel privé ou interne et l'ensemble du réseau de fourches du référentiel. Les ensembles de règles de poussée vous permettent de bloquer les envois en fonction des extensions de fichiers, de la longueur des chemins d'accès aux fichiers, des chemins d'accès aux fichiers et aux dossiers, et de la taille des fichiers.

Lorsque vous créez un ensemble de règles, vous pouvez autoriser certains utilisateurs à contourner les règles de l’ensemble de règles.

Pour plus d’informations sur les ensembles de règles, consultez À propos des ensembles de règles.

Importation d’ensembles de règles prédéfinis

Pour importer l’un des ensembles de règles prédéfinis par GitHub, consultez github/ruleset-recipes.

Vous pouvez importer un ensemble de règles à partir d’un autre référentiel ou d’une autre organisation à l’aide d’un fichier JSON. Ceci peut être utile si vous souhaitez appliquer le même ensemble de règles à plusieurs référentiels ou organisations. Pour plus d’informations, consultez Gestion des ensembles de règles pour les dépôts de votre organisation.

Utilisation de la syntaxe fnmatch

Vous pouvez utiliser la syntaxe fnmatch pour définir les motifs à cibler lorsque vous créez un ensemble de règles.

Vous pouvez utiliser le caractère générique * pour faire correspondre n’importe quelle chaîne de caractères. Étant donné que GitHub utilise l’indicateur File::FNM_PATHNAME pour la syntaxe File.fnmatch, le caractère générique * ne correspond pas aux séparateurs de répertoires (/). Par exemple, qa/* correspond à toutes les branches commençant par qa/ et contenant une barre oblique unique, mais ne correspond pas à qa/foo/bar. Vous pouvez inclure n’importe quel nombre de barres obliques après qa avec qa/**/*, qui correspondrait, par exemple, à qa/foo/bar/foobar/hello-world. Vous pouvez également étendre la chaîne qa avec qa**/**/* pour rendre la règle plus inclusive.

Pour plus d’informations sur les options de syntaxe, consultez la documentation fnmatch.

Syntaxe fnmatch non prise en charge

Toutes les expressions de la syntaxe fnmatch ne sont pas prises en charge dans les règles de protection des branches. Tenez compte des contraintes suivantes :

  • Vous ne pouvez pas utiliser la barre oblique inverse (\) comme caractère de citation, car GitHub ne prend pas en charge l’utilisation de barres obliques inverses dans les règles de protection des branches.
  • Vous pouvez spécifier des jeux de caractères entre crochets ([]), mais actuellement, vous ne pouvez pas compléter un jeu avec l’opérateur ^ (par exemple, [^charset]).
  • Bien que GitHub prend en charge File::FNM_PATHNAME dans la syntaxe fnmatch, File::FNM_EXTGLOB n’est pas pris en charge.

Utilisation des états d’application de l’ensemble de règles

Lors de la création ou de la modification de votre ensemble de règles, vous pouvez utiliser les statuts de mise en œuvre pour configurer la manière dont votre ensemble de règles mettra en œuvre les principes de protection des informations personnelles.

Vous pouvez sélectionner l'un des états de mise œuvre suivants pour votre ensemble de règles.

  • ** Actif **: votre ensemble de règles sera appliqué lors de la création.
  • ** Désactivé **: votre ensemble de règles n’est pas appliqué.

Création d’un ensemble de règles de branche ou de balise

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépôt, cliquez sur Paramètres. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant , puis cliquez sur Paramètres.

    Capture d’écran d’un en-tête de dépôt montrant les onglets. L’onglet « Paramètres » est mis en évidence avec un encadré orange foncé.

  3. Dans la barre latérale gauche, sous « Code et automatisation », cliquez sur Règles, puis sur Ensembles de règles.

    Capture d’écran de la barre latérale de la page « Paramètres » d’un dépôt. Le sous-menu « Règles » est développé et l’option « Ensembles de règles » est encadrée en orange.

  4. Cliquez sur Nouveau jeu de données.

  5. Pour créer un ensemble de règles ciblant des branches, cliquez sur Nouvel ensemble de règles de branche.

  6. Vous pouvez également créer un ensemble de règles ciblant des balises, cliquez sur Nouvel ensemble de règles de balise.

  7. Sous « Nom de l’ensemble de règles », tapez un nom pour l’ensemble de règles.

  8. Si vous le souhaitez, pour modifier l’état d’application par défaut, cliquez sur Désactivé et sélectionnez un état d’application. Pour plus d’informations sur les états de mise en œuvre, consultez « À propos des ensembles de règles ».

Octroi d’autorisations de contournement pour votre ensemble de règles de branche ou de balise

Vous pouvez accorder à certains rôles, équipes ou applications des autorisations de contournement pour votre jeu de règles. Les éléments suivants sont éligibles pour contourner l’accès :

  • Administrateurs de référentiels, propriétaire d’organisation et propriétaires d’entreprise
  • Le rôle de maintenance ou d’écriture, ou rôles de référentiel personnalisés en fonction du rôle d’écriture
  • Teams
  • GitHub Apps
  • Dependabot. Pour plus d’informations sur Dependabot, consultez « Guide de démarrage rapide Dependabot ».
  1. Pour accorder des autorisations de contournement pour l’ensemble de règles, dans la section « Liste de contournement », cliquez sur Ajouter un contournement.

  2. Dans la boîte de dialogue modale « Ajouter un contournement » qui s’affiche, recherchez le rôle, l’équipe ou l’application à laquelle vous souhaitez accorder des autorisations de contournement, puis sélectionnez le rôle, l’équipe ou l’application dans la section « Suggestions » et cliquez sur Ajouter sélectionné.

  3. Si vous le souhaitez, pour accorder un contournement à un acteur sans lui permettre de pousser directement vers un référentiel, à droite de « Toujours autoriser », cliquez sur , puis cliquez sur Pour les demandes de tirage uniquement.

    L’acteur sélectionné est maintenant tenu d’ouvrir une demande de tirage pour apporter des modifications à un référentiel, en créant une trace claire de ses modifications dans la demande de tirage et le journal d'audit. L’acteur peut ensuite choisir de contourner les protections de branche et de fusionner cette demande de tirage.

Choix des branches ou des balises à cibler

Pour cibler les branches ou les balises, dans la section « Cibler des branches » ou « Cibler des balises », sélectionnez Ajouter une cible, puis sélectionnez la façon dont vous souhaitez inclure ou exclure des branches ou des étiquettes. Vous pouvez utiliser la syntaxe fnmatch pour inclure ou exclure des branches ou des étiquettes sur la base d’un modèle. Pour plus d’informations, consultez « Utilisation de la syntaxe fnmatch ».

Vous pouvez ajouter plusieurs critères de ciblage au même ensemble de règles. Par exemple, vous pouvez inclure la branche par défaut, inclure toutes les branches correspondant au modèle *feature*, puis exclure spécifiquement une branche correspondant au modèle not-a-feature.

Sélection de protections de branche ou de balise

Dans la section « Protections de branches » ou « Protections d’étiquettes », sélectionnez les règles que vous souhaitez inclure dans l’ensemble de règles. Lorsque vous sélectionnez une règle, vous pouvez entrer des paramètres supplémentaires pour la règle. Pour plus d’informations sur les règles, consultez « Règles disponibles pour les ensembles de règles ».

Note

Si vous sélectionnez Exiger des contrôles d'état avant la fusion , dans la section « Paramètres supplémentaires » :

  • Vous pouvez entrer le nom de chaque vérification d’état que vous souhaitez exiger. Pour terminer l’ajout de la vérification d’état comme condition requise, vous devez cliquer sur .
  • Si vous sélectionnez Exiger que les branches soient à jour avant la fusion, vous devez définir une vérification pour que la protection prenne effet.

Ajout de restrictions des métadonnées

Vos restrictions en matière de métadonnées doivent avoir pour but d'améliorer la cohérence entre les modifications apportées à votre référentiel. Elles ne sont pas destinées à remplacer les mesures de sécurité, comme exiger une révision du code via des demandes de tirage.

Note

Si vous effectuez la fusion Squash d’une branche, toutes les validations sur cette branche doivent répondre à toutes les exigences de métadonnées pour la branche de base.

  1. Pour ajouter une règle permettant de contrôler les métadonnées de validation ou les noms de branche, dans la section « Restrictions » lors de la création ou de la modification d'un jeu de règles, cliquez sur Restreindre les métadonnées de validation ou sur Restreindre les noms de branche.

  2. Configurez les paramètres de restriction, puis cliquez sur Ajouter. Vous pouvez ajouter plusieurs restrictions au même ensemble de règles.

  3. Pour correspondre à un modèle d’expression régulière donné, dans la liste déroulante « Condition requise », sélectionnez Doit correspondre à un modèle d’expression régulière donné.

    Pour la plupart des conditions, telles que « Doit commencer par un modèle de correspondance », le modèle que vous entrez est interprété littéralement et les caractères génériques ne sont pas pris en charge. Par exemple, le caractère * représente uniquement le caractère * littéral.

    Pour les modèles plus complexes, vous pouvez sélectionner « Doit correspondre à un modèle regex donné » ou « Ne doit pas correspondre à un modèle regex donné », puis utiliser la syntaxe d’expression régulière pour définir le modèle correspondant. Pour plus d’informations, consultez « À propos des expressions régulières pour les métadonnées de livraison » dans la documentation GitHub Enterprise Cloud.

    Toute personne visualisant les ensembles de règles d’un dépôt peut voir la description que vous fournissez.

  4. Si vous le souhaitez, avant d'appliquer votre jeu de règles avec des restrictions sur les métadonnées, sélectionnez l'état d'application « Évaluer » pour votre jeu de règles afin de tester les effets des restrictions sur les métadonnées sans impacter les contributeurs. Pour plus d’informations sur les restrictions de métadonnées, consultez « Règles disponibles pour les ensembles de règles ».

Finalisation de l'ensemble de règles de votre branche ou de votre balise et étapes suivantes

Pour terminer la création de votre ensemble de règles, cliquez sur Créer. Si le statut de l’application de l’ensemble de règles est défini sur « Actif », l’ensemble de règles prend effet immédiatement.

Création d’un ensemble de règles de poussée

Note

Cet ensemble de règles appliquera les restrictions de poussée pour l'ensemble du réseau de fourches de ce référentiel.

Vous pouvez créer un ensemble de règles de poussées à partir de référentiels publics, privés ou internes.

  1. Sur GitHub, accédez à la page principale du référentiel.

  2. Sous le nom de votre dépôt, cliquez sur Paramètres. Si vous ne voyez pas l’onglet « Paramètres », sélectionnez le menu déroulant , puis cliquez sur Paramètres.

    Capture d’écran d’un en-tête de dépôt montrant les onglets. L’onglet « Paramètres » est mis en évidence avec un encadré orange foncé.

  3. Dans la barre latérale gauche, sous « Code et automatisation », cliquez sur Règles, puis sur Ensembles de règles.

    Capture d’écran de la barre latérale de la page « Paramètres » d’un dépôt. Le sous-menu « Règles » est développé et l’option « Ensembles de règles » est encadrée en orange.

  4. Cliquez sur Nouveau jeu de données.

  5. Pour créer un ensemble de règles ciblant des branches, cliquez sur Nouvel ensemble de règles de poussée.

  6. Sous « Nom de l’ensemble de règles », tapez un nom pour l’ensemble de règles.

  7. Si vous le souhaitez, pour modifier l’état d’application par défaut, cliquez sur Désactivé et sélectionnez un état d’application. Pour plus d’informations sur les états de mise en œuvre, consultez « À propos des ensembles de règles ».

Octroi d’autorisations de contournement pour votre ensemble de règles de poussée

Note

Les autorisations de contournement pour les ensembles de règles de poussée dans ce référentiel seront héritées par l'ensemble du réseau de fourches pour ce référentiel. Cela signifie que les seuls utilisateurs qui peuvent contourner cet ensemble de règles pour n’importe quel dépôt du réseau de fourche de ce référentiel sont les utilisateurs qui peuvent contourner cet ensemble de règles dans le référentiel racine.

Vous pouvez accorder à certains rôles, équipes ou applications des autorisations de contournement pour votre jeu de règles. Les éléments suivants sont éligibles pour contourner l’accès :

  • Administrateurs de référentiels, propriétaire d’organisation et propriétaires d’entreprise
  • Le rôle de maintenance ou d’écriture, ou rôles de référentiel personnalisés en fonction du rôle d’écriture
  • Teams
  • GitHub Apps
  • Dependabot. Pour plus d’informations sur Dependabot, consultez « Guide de démarrage rapide Dependabot ».
  1. Pour accorder des autorisations de contournement pour l’ensemble de règles, dans la section « Liste de contournement », cliquez sur Ajouter un contournement.
  2. Dans la boîte de dialogue modale « Ajouter un contournement » qui s’affiche, recherchez le rôle, l’équipe ou l’application à laquelle vous souhaitez accorder des autorisations de contournement, puis sélectionnez le rôle, l’équipe ou l’application dans la section « Suggestions » et cliquez sur Ajouter sélectionné.

Sélection de protections de poussées

Vous pouvez bloquer les poussées vers ce référentiel et l'ensemble du réseau de fourches de ce référentiel en fonction de l'extension des fichiers, de la longueur des chemins d'accès aux fichiers, des chemins d'accès aux fichiers et aux dossiers et de la taille des fichiers.

Toutes les protections de poussées que vous configurez bloquent les poussées dans ce référentiel et dans l’ensemble du réseau de fourche de ce référentiel.

  1. Sous « Protections des poussées », cliquez sur les restrictions que vous souhaitez appliquer. Renseignez ensuite les détails des restrictions que vous sélectionnez.

    Pour les restrictions de chemin d’accès de fichier, vous pouvez utiliser des chemins partiels ou complets. Vous pouvez utiliser la syntaxe fnmatch pour cela. Par exemple, une restriction ciblant test/demo/**/* empêche toute poussée vers les fichiers ou dossiers du répertoire test/demo/. Une restriction visant test/docs/pushrules.md empêche les poussées spécifiquement vers le fichier pushrules.md dans le répertoire test/docs/. Pour plus d’informations, consultez « Création d’un ensemble de règles pour un dépôt ».

Finalisation de votre ensemble de règles de poussée et étapes suivantes

Pour terminer la création de votre ensemble de règles, cliquez sur Créer. Si le statut de l’application de l’ensemble de règles est défini sur « Actif », l’ensemble de règles prend effet immédiatement.