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 Acerca de los conjuntos de reglas.
Importing prebuilt rulesets
To import a prebuilt ruleset created by GitHub, see github/ruleset-recipes
.
Puedes importar un conjunto de reglas desde otro repositorio u organización mediante un archivo JSON. Esto puede ser útil si deseas aplicar el mismo conjunto de reglas a varios repositorios u organizaciones. For more information, see "Administración de conjuntos de reglas para repositorios de la organización."
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.
- To target organizations, you can select all, choose from a list, or define a dynamic pattern for organization names using
fnmatch
syntax. For syntax details, see Creación de conjuntos de reglas de un repositorio. - Within those organizations, you can target all repositories, or target a dynamic list by custom property. See Administración de propiedades personalizadas para repositorios de la organización.
- Within the repositories, you can target certain branches or tags: all branches, the default branch, or a dynamic list using
fnmatch
syntax.
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 Creación de conjuntos de reglas de un repositorio.
Using ruleset enforcement statuses
Al crear o editar el conjunto de reglas, puede utilizar los estados de obligatoriedad para configurar cómo se aplicará el conjunto de reglas.
Puede seleccionar cualquiera de los siguientes estados de obligatoriedad para el conjunto de reglas.
- Active: tu conjunto de reglas se aplicará después de la creación.
- Evaluate: tu conjunto de reglas no se aplicará, pero podrás supervisar las acciones que podrían infringir o no las reglas en la página "Rule Insights".
- Disabled: tu conjunto de reglas no se aplicará ni evaluará.
El uso del modo «Calcular» es una excelente opción para probar el conjunto de reglas sin aplicarlo. Puedes utilizar la página «Información sobre reglas» para ver si la contribución habría infringido la regla. Para más información, consulta Administración de conjuntos de reglas de un repositorio.
Creating a branch or tag ruleset
-
En la esquina superior derecha de GitHub, haz clic en la fotografía del perfil.
-
En función de tu entorno, haz clic en Your enterpriseo en Your enterprises y, a continuación, haz clic en la empresa que deseas ver.
-
En el lado izquierdo de la página, en la barra lateral de la cuenta de empresa, haz clic en Directivas.
-
Under "Policies", click Code.
-
Haga clic en Nuevo conjunto de reglas.
-
Para crear un conjunto de reglas que tenga como destino ramas, haz clic en Nuevo conjunto de reglas de rama.
-
Como alternativa, para crear etiquetas de destino de un conjunto de reglas, haz clic en Nuevo conjunto de reglas de etiquetas.
-
En «Nombre del conjunto de reglas», escribe un nombre para el conjunto de reglas.
-
Opcionalmente, para cambiar el estado de cumplimiento predeterminado, haz clic en Deshabilitado y selecciona un estado de cumplimiento. Para obtener más información sobre los estados de obligatoriedad, consulta Acerca de los conjuntos de reglas.
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.
-
To grant bypass permissions for the ruleset, in the "Bypass list" section, click Add bypass.
-
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.
-
Opcionalmente, para conceder omisión a un actor sin permitirles insertar directamente en un repositorio, a la derecha de «Permitir siempre», haz clic en y, a continuación, haz clic en Solo para solicitudes de incorporación de cambios.
El actor seleccionado debe ahora abrir una solicitud de incorporación de cambios para realizar cambios en un repositorio, creando una pista digital clara en la solicitud de cambios y el registro de auditoría. Luego, el actor puede optar por omitir las protecciones de rama y combinar esa solicitud de incorporación de cambios.
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 "Creación de conjuntos de reglas de un repositorio."
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 Administración de propiedades personalizadas para repositorios de la organización.
Choosing which branches or tags to target
Para definir ramas o etiquetas, en la sección "Ramas objetivo" o "Etiquetas objetivo", seleccione Agregar un objetivo y, a continuación, seleccione cómo desea incluir o excluir ramas o etiquetas. Puedes usar la sintaxis fnmatch
para incluir o excluir ramas o etiquetas en función de un patrón. Para más información, consulta Uso de la sintaxis de fnmatch
.
Puedes agregar varios criterios de selección de destino al mismo conjunto de reglas. Por ejemplo, podrías incluir la rama predeterminada, incluir cualquier rama que coincida con el patrón *feature*
y, a continuación, excluir específicamente una rama que coincida con el patrón not-a-feature
.
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 "Reglas disponibles para conjuntos de reglas"
Adding metadata restrictions
Las restricciones de metadatos deben estar pensadas para aumentar la coherencia entre confirmaciones en el repositorio. No están diseñadas para reemplazar medidas de seguridad, como requerir la revisión de código mediante solicitudes de cambios.
Note
Si realizas en una rama una fusión mediante combinación con "squash", todas las confirmaciones de esa rama deben cumplir los requisitos de metadatos de la rama base.
-
Para agregar una regla para controlar los metadatos del commit o los nombres de rama, en la sección "Restrictions", haz clic en Restrict commit metadata o Restrict branch names.
-
Configura los ajustes de la restricción y, a continuación, haz clic en Añadir. Puedes agregar varias restricciones al mismo conjunto de reglas.
-
Para que coincida con un patrón regex determinado, en la lista desplegable «Requisito», selecciona Debe coincidir con un patrón regex determinado.
Para la mayoría de los requisitos, como "Debe empezar con un patrón coincidente", el patrón que escribas se interpreta literalmente y no se admiten caracteres comodín. Por ejemplo, el carácter
*
solo representa el carácter literal*
.Para patrones más complejos, puedes seleccionar "Debe coincidir con un patrón regex determinado" o "No debe coincidir con un patrón regex determinado", y luego usar la sintaxis de expresión regular para definir el patrón coincidente. Para más información, consulta Acerca de las expresiones regulares para los metadatos de confirmación.
Cualquier persona que vea los conjuntos de reglas de un repositorio podrá ver la descripción que proporciones.
-
Opcionalmente, antes de aplicar un conjunto de reglas con restricciones de metadatos, selecciona el estado de cumplimiento "Evaluate" para el conjunto de reglas para probar los efectos de las restricciones de metadatos sin que ello afecte a los colaboradores. Para más información sobre las restricciones de metadatos, consulta Reglas disponibles para conjuntos de reglas.
Finalizing your branch or tag ruleset and next steps
Para terminar de crear el conjunto de reglas, haga clic en Crear. Si el estado de cumplimiento del conjunto de reglas se establece en "Activo", el conjunto de reglas entra en vigor inmediatamente.
Puede ver información sobre el conjunto de reglas para ver cómo afectan las reglas a los colaboradores. Si el estado de cumplimiento se establece en "Evaluar", puede ver qué acciones habrían pasado o fallado si el conjunto de reglas estaba activo. Para más información sobre la información para conjuntos de reglas, consulta Administración de conjuntos de reglas de un repositorio.
Creating a push ruleset
Note
Este conjunto de reglas aplicará restricciones de inserción para toda la red de bifurcación de este repositorio.
You can create a push ruleset for private or internal repositories in your enterprise.
- En la esquina superior derecha de GitHub, haz clic en la fotografía del perfil.
- En función de tu entorno, haz clic en Your enterpriseo en Your enterprises y, a continuación, haz clic en la empresa que deseas ver.
- In the left sidebar, in the "Policies" section, click Code.
- Click New ruleset.
- Click New push ruleset.
- Under "Ruleset name," type a name for the ruleset.
- Optionally, to change the default enforcement status, click Disabled and select an enforcement status. For more information about enforcement statuses, see Acerca de los conjuntos de reglas
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. Esto significa que los únicos usuarios que pueden omitir este conjunto de reglas para cualquier repositorio de toda la red de bifurcación de este repositorio son los usuarios que pueden omitir este conjunto de reglas en el repositorio raíz.
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
- To grant bypass permissions for the ruleset, in the "Bypass list" section, click Add bypass.
- 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 "Creación de conjuntos de reglas de un repositorio."
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 Administración de propiedades personalizadas para repositorios de la organización.
Selecting push protections
Puedes bloquear inserciones en este repositorio y toda la red de bifurcación de este repositorio en función de extensiones de archivo, longitudes de ruta de acceso de archivo, rutas de acceso de archivo y carpetas y tamaños de archivo.
Las protecciones de inserción que configures bloquearán las inserciones en este repositorio y en toda la red de bifurcación de este repositorio.
-
En «Protección de inserción», haz clic en las restricciones que deseas aplicar. A continuación, rellena los detalles de las restricciones que selecciones.
En el caso de las restricciones de ruta de acceso de archivo, puedes usar rutas de acceso parciales o completas. Para ello, puedes usar la sintaxis
fnmatch
. Por ejemplo, una restricción dirigidatest/demo/**/*
evita las inserciones en archivos o carpetas del directoriotest/demo/
. Un destino de restriccióntest/docs/pushrules.md
impide que las inserciones se inserten específicamente en el archivopushrules.md
del directoriotest/docs/
. Para más información, consulta Creación de conjuntos de reglas de un repositorio.
Finalizing your push ruleset and next steps
Para terminar de crear el conjunto de reglas, haga clic en Crear. Si el estado de cumplimiento del conjunto de reglas se establece en "Activo", el conjunto de reglas entra en vigor inmediatamente.
Puede ver información sobre el conjunto de reglas para ver cómo afectan las reglas a los colaboradores. Si el estado de cumplimiento se establece en "Evaluar", puede ver qué acciones habrían pasado o fallado si el conjunto de reglas estaba activo. Para más información sobre la información para conjuntos de reglas, consulta Administración de conjuntos de reglas de un repositorio.