Skip to main content

Enforcing code governance in your enterprise with rulesets

You can create a ruleset to target multiple repositories in your enterprise.

Wer kann dieses Feature verwenden?

Enterprise owners

Introduction

Note

Enterprise code rulesets are currently in public preview and subject to change.

You can create rulesets to control how users can interact with code in repositories across your enterprise. You can:

  • Create a branch or tag ruleset to control things like who can push commits to a certain branch, how commits must be formatted, or who can delete or rename a tag.
  • Create a push ruleset to block pushes to a private or internal repository and the repository's entire fork network. Push rulesets allow you to block pushes based on file extensions, file path lengths, file and folder paths, and file sizes.

To learn more, see Informationen zu Regelsätzen.

Importing prebuilt rulesets

To import a prebuilt ruleset created by GitHub, see github/ruleset-recipes.

Sie können einen Regelsatz aus einem anderen Repository oder einer anderen Organisation mithilfe einer JSON-Datei importieren. Dies kann besonders dann hilfreich sein, wenn Sie denselben Regelsatz auf mehrere Repositorys oder Organisationen anwenden möchten. For more information, see "Verwalten von Regelsätzen für Repositorys in deiner Organisation."

How will I define where my ruleset applies?

Rulesets allow you to flexibly target the organizations, repositories, and branches where you want rules to apply.

When you create a ruleset that targets branches in a repository, repository administrators can no longer rename branches or change the default branch in the targeted repository. They can still create and delete branches if they have the appropriate permissions.

How can I control the format of commits?

In branch or tag rulesets, you can add a rule that restricts the format of commit metadata such as commit message or author email.

If you select Must match a given regex pattern restriction, you can use regular expression syntax to define patterns that the metadata must or must not match. For syntax details and examples, see Erstellen von Regelsätzen für ein Repository.

Using ruleset enforcement statuses

Beim Erstellen oder Bearbeiten Ihres Regelsatzes können Sie Erzwingungsstatus verwenden, um zu konfigurieren, wie Ihr Regelsatz erzwungen wird.

Sie können einen der folgenden Erzwingungsstatus für Ihr Regelsatz auswählen.

  • Active: Dein Regelsatz wird beim Erstellen erzwungen.
  • Evaluate: Dein Regelsatz wird nicht erzwungen, doch du kannst überwachen auf der Seite „Rule Insights“ überwachen, welche Aktionen die Regeln verletzen würden.
  • Disabled: Dein Regelsatz wird nicht erzwungen oder ausgewertet.

Die Verwendung des Modus „Auswerten“ ist eine hervorragende Option zum Testen des Regelsets, ohne es zu erzwingen. Sie können die Seite „Regeleinblicke“ verwenden, um festzustellen, ob der Beitrag gegen die Regel verstoßen hätte. Weitere Informationen finden Sie unter Verwalten von Regelsätzen für ein Repository.

Creating a branch or tag ruleset

  1. Klicke auf GitHub in der oberen rechten Ecke auf dein Profilfoto.

  2. Klicke je nach deiner Umgebung auf Dein Unternehmenoder auf Deine Unternehmen, und klicke dann auf das Unternehmen, das du anzeigen möchtest.

  3. Klicken Sie auf der linken Seite der Seite in der Randleiste des Enterprise-Kontos auf Richtlinien

  4. Under "Policies", click Code.

  5. Klicken Sie auf Neuer Regelsatz.

  6. Klicke auf Neuer Regelsatz für Branches, um einen Regelsatz für Branches zu erstellen.

  7. Wenn Sie ein Regelsatz für Tags erstellen möchten, klicken Sie auf Neues Tag-Regelsatz.

  8. Geben Sie unter „Regelsatzname“ einen Namen für den Regelsatz ein.

  9. Um den standardmäßigen Durchsetzungsstatus zu ändern, klicken Sie auf Deaktiviert und wählen Sie einen Durchsetzungsstatus aus. Weitere Informationen zu Erzwingungsstatus findest du unter Informationen zu Regelsätzen.

Granting bypass permissions for your branch or tag ruleset

You can grant certain roles, teams, or apps bypass permissions as well as the ability to approve bypass requests for your ruleset.

The following are eligible for bypass access:

  • Repository admins, organization owners, and enterprise owners
  • The maintain or write role, or deploy keys.
  1. To grant bypass permissions for the ruleset, in the "Bypass list" section, click Add bypass.

  2. In the "Add bypass" modal dialog that appears, search for the role, team, or app you would like to grant bypass permissions, then select the role, team, or app from the "Suggestions" section and click Add Selected.

  3. Optional klicken Sie rechts von „Immer Zulassen“ auf und dann auf Nur für Pull-Requests, um eine Überbrückung an einen Akteur zu gewähren, ohne sie direkt an ein Repository zu übertragen.

    Der ausgewählte Akteur ist jetzt aufgefordert, eine Pull-Anforderung zu öffnen, um Änderungen an einem Repository vorzunehmen und eine klare Spur ihrer Änderungen im Pull Request und Überwachungsprotokoll zu erstellen. Die Akteur*innen können dann alle Schutzmechanismen für den Branch umgehen und diesen Pull Request mergen.

Choosing which organizations to target in your enterprise

Select all organizations, choose a selection of existing organizations, or set a dynamic list by name. If you use Enterprise Managed Users, you can also choose to target all repositories owned by users in your enterprise.

If you set a dynamic list, you'll add one or more naming patterns using fnmatch syntax. For example, the string *open-source would match any organization with a name that ends with open-source. For syntax details, see "Erstellen von Regelsätzen für ein Repository."

Choosing which repositories to target in your enterprise

Within the selected organizations, you can target all repositories or target a dynamic list by custom property. See Verwalten von benutzerdefinierten Eigenschaften für Repositorys in Ihrer Organisation.

Choosing which branches or tags to target

Wählen Sie im Abschnitt „Ziel-Verzweigungen“ oder „Ziel-Tags“ die Option Ziel hinzufügen aus, und legen Sie dann fest, wie Sie Verzweigungen oder Tags ein- oder ausschließen möchten. Mithilfe der fnmatch-Syntax kannst du Branches oder Tags basierend auf einem Muster ein- oder ausschließen. Weitere Informationen findest du unter Verwenden der fnmatch-Syntax.

Du kannst demselben Regelsatz mehrere Ausrichtungskriterien hinzufügen. Du kannst beispielsweise den Standardbranch und alle Branches einschließen, die dem Muster *feature* entsprechen, und dann explizit einen Branch ausschließen, der dem Muster not-a-feature entspricht.

Selecting branch or tag protections

In the "Branch protections" or "Tag protections" section, select the rules you want to include in the ruleset. When you select a rule, you may be able to enter additional settings for the rule. For more information on the rules, see "Verfügbare Regeln für Regelsätze"

Adding metadata restrictions

Deine Metadateneinschränkungen sollen die Konsistenz zwischen Commits in deinem Repository erhöhen. Sie sind nicht dazu bestimmt, Sicherheitsmaßnahmen wie die Anforderung eines Code Reviews über Pull Requests zu ersetzen.

Note

Wenn du einen Squashmerge für einen Branch ausführst, müssen alle Commits in diesem Branch alle Metadatenanforderungen für den Basisbranch erfüllen.

  1. Um eine Regel zum Steuern von Commit-Metadaten oder Branchnamen hinzuzufügen, klicke beim Erstellen oder Bearbeiten eines Regelsatzes im Abschnitt „Restrictions“ auf Restrict commit metadata oder auf Restrict branch names.

  2. Konfigurieren Sie die Einstellungen für die Einschränkung und klicken Sie dann auf Hinzufügen. Dem gleichen Regelsatz können mehrere Einschränkungen hinzugefügt werden.

  3. Um einem bestimmten regex-Muster zu entsprechen, wählen Sie im Dropdownmenü „Anforderung“ die Option Muss einem bestimmten regex-Muster entsprechen aus.

    Für die meisten Anforderungen, z. B. „Muss mit einem übereinstimmenden Muster beginnen“, wird das von dir eingegebene Muster wörtlich interpretiert, und Platzhalter werden nicht unterstützt. Das Zeichen * stellt beispielsweise nur das Literalzeichen * dar.

    Für komplexere Muster kannst du „Muss einem bestimmten Regex-Muster entsprechen“ oder „Darf nicht mit einem bestimmten Regex-Muster übereinstimmen“ auswählen. Verwende dann die Syntax regulärer Ausdrücke, um das übereinstimmende Muster zu definieren. Weitere Informationen findest du unter Über reguläre Ausdrücke für Commit-Metadaten.

    Alle, die die Regelsätze für ein Repository anzeigen, können die von dir bereitgestellte Beschreibung sehen.

  4. Bevor du deinen Regelsatz mit Metadateneinschränkungen aktivierst, kannst du optional den Erzwingungsstatus „Evaluate“ für deinen Regelsatz auswählen, um die Auswirkungen von Metadateneinschränkungen zu testen, ohne Mitwirkende zu beeinträchtigen. Weitere Informationen zu Metadateneinschränkungen findest du unter Verfügbare Regeln für Regelsätze.

Finalizing your branch or tag ruleset and next steps

Klicken Sie auf Erstellen, um das Erstellen des Regelsets zu beenden. Wenn der Durchsetzungsstatus des Regelsatzes auf „Aktiv“ eingestellt ist, wird der Regelsatz sofort wirksam.

Sie können Erkenntnisse für den Regelsatz anzeigen, um zu sehen, wie sich die Regeln auf Ihre Teilnehmer auswirken. Wenn der Durchsetzungsstatus auf „Auswerten“ festgelegt ist, können Sie sehen, welche Aktionen bestanden oder fehlgeschlagen wären, wenn der Regelsatz aktiv war. Weitere Informationen zu den Erkenntnissen für Regelsätze findest du unter Verwalten von Regelsätzen für ein Repository.

Creating a push ruleset

Note

Dieser Regelsatz erzwingt Push-Beschränkungen für das gesamte Forknetzwerk dieses Repositorys.

You can create a push ruleset for private or internal repositories in your enterprise.

  1. Klicke auf GitHub in der oberen rechten Ecke auf dein Profilfoto.
  2. Klicke je nach deiner Umgebung auf Dein Unternehmenoder auf Deine Unternehmen, und klicke dann auf das Unternehmen, das du anzeigen möchtest.
  3. In the left sidebar, in the "Policies" section, click Code.
  4. Click New ruleset.
  5. Click New push ruleset.
  6. Under "Ruleset name," type a name for the ruleset.
  7. Optionally, to change the default enforcement status, click Disabled and select an enforcement status. For more information about enforcement statuses, see Informationen zu Regelsätzen

Granting bypass permissions for your push ruleset

Note

Bypass permissions for push rulesets that target a repository will be inherited by the entire fork network for this repository. Dies bedeutet, dass die einzigen Benutzer, die diesen Regelsatz für jedes Repository im gesamten Forknetzwerk dieses Repositorys umgehen können, die Benutzer sind, die dieses Regelsatz im Stamm-Repository umgehen können.

You can grant certain roles, teams, or apps bypass permissions as well as the ability to approve bypass requests for your ruleset. The following are eligible for bypass access:

  • Repository admins, organization owners, and enterprise owners
  • The maintain or write role, or deploy keys
  1. To grant bypass permissions for the ruleset, in the "Bypass list" section, click Add bypass.
  2. In the "Add bypass" modal dialog that appears, search for the role, team, or app you would like to grant bypass permissions, then select the role, team, or app from the "Suggestions" section and click Add Selected.

Choosing which organizations to target in your enterprise

Select all organizations, choose a selection of existing organizations, or set a dynamic list by name. If you use Enterprise Managed Users, you can also choose to target all repositories owned by users in your enterprise.

If you set a dynamic list, you'll add one or more naming patterns using fnmatch syntax. For example, the string *open-source would match any organization with a name that ends with open-source. For syntax details, see "Erstellen von Regelsätzen für ein Repository."

Choosing which repositories to target in your enterprise

Within your chosen organizations, you can target all repositories, or target a dynamic list using custom properties. See Verwalten von benutzerdefinierten Eigenschaften für Repositorys in Ihrer Organisation.

Selecting push protections

Sie können Pushes an dieses Repository und das gesamte Forknetzwerk dieses Repositorys basierend auf Dateierweiterungen, Dateipfadlängen, Datei- und Ordnerpfaden und Dateigrößen blockieren.

Jeder von Ihnen konfigurierten Pushschutz blockiert Pushes in diesem Repository und im gesamten Forknetzwerk dieses Repositorys.

  1. Klicken Sie unter „Pushschutz“ auf die Einschränkungen, die Sie anwenden möchten. Geben Sie dann die Details für die von Ihnen ausgewählten Einschränkungen ein.

    Für Dateipfadeinschränkungen können Sie teilweise oder vollständige Pfade verwenden. Sie können fnmatch-Syntax hierfür verwenden. Eine Einschränkung, die zum Beispiel auf test/demo/**/* zielt, verhindert Pushes an Dateien oder Ordner im test/demo/-Verzeichnis. Eine Einschränkung mit Ziel test/docs/pushrules.md verhindert Pushs, speziell an die pushrules.md-Datei im test/docs/-Verzeichnis. Weitere Informationen finden Sie unter Erstellen von Regelsätzen für ein Repository.

Finalizing your push ruleset and next steps

Klicken Sie auf Erstellen, um das Erstellen des Regelsets zu beenden. Wenn der Durchsetzungsstatus des Regelsatzes auf „Aktiv“ eingestellt ist, wird der Regelsatz sofort wirksam.

Sie können Erkenntnisse für den Regelsatz anzeigen, um zu sehen, wie sich die Regeln auf Ihre Teilnehmer auswirken. Wenn der Durchsetzungsstatus auf „Auswerten“ festgelegt ist, können Sie sehen, welche Aktionen bestanden oder fehlgeschlagen wären, wenn der Regelsatz aktiv war. Weitere Informationen zu den Erkenntnissen für Regelsätze findest du unter Verwalten von Regelsätzen für ein Repository.