Skip to main content

Acerca de los conjuntos de reglas

Los conjuntos de reglas ayudan a controlar cómo los usuarios pueden interactuar con ramas y etiquetas de un repositorio.

¿Quién puede utilizar esta característica?

Cualquier persona con acceso de lectura a un repositorio puede ver los conjuntos de reglas del repositorio. Las personas con acceso de administrador a un repositorio o un rol personalizado con el permiso "editar reglas de repositorio", pueden crear, editar y eliminar conjuntos de reglas para un repositorio.

Los conjuntos de reglas están disponibles en los repositorios públicos con GitHub Free y GitHub Free para organizaciones, y en los repositorios públicos y privados con GitHub Pro, GitHub Team y GitHub Enterprise Cloud. Para más información, consulta "Planes de GitHub".

Los conjuntos de reglas de inserción están disponibles para el plan GitHub Team en repositorios internos y privados, y bifurcaciones de repositorios que tienen habilitados conjuntos de reglas de inserción.

Acerca de los conjuntos de reglas

Un conjunto de reglas es una lista de reglas con nombre que se aplican a un repositorio. Puedes tener hasta 75 conjuntos de reglas por repositorio.

Al crear un conjunto de reglas, puedes permitir que determinados usuarios omitan las reglas del conjunto de reglas. Pueden ser usuarios con un rol determinado, como el administrador del repositorio, o bien pueden ser equipos o GitHub Apps específicos. Para obtener más información sobre los permisos de omisión, consulta Creación de conjuntos de reglas de un repositorio.

En el caso de las organizaciones del plan GitHub Enterprise, puedes configurar conjuntos de reglas a nivel de organización para aplicar a varios repositorios de la organización. Para obtener más información, consulta Administración de conjuntos de reglas para repositorios de la organización en la documentación de GitHub Enterprise Cloud.

Puedes usar conjuntos de reglas para dirigir ramas o etiquetas en un repositorio o para bloquear inserciones en un repositorio y toda la red de bifurcación del repositorio.

Conjuntos de reglas de rama y etiqueta

Puedes crear conjuntos de reglas para controlar cómo las personas pueden interactuar con ramas y etiquetas seleccionadas en un repositorio. Puedes controlar aspectos como quién puede insertar confirmaciones en una rama determinada, o quién puede eliminar una etiqueta o cambiarle el nombre. Por ejemplo, podrías configurar un conjunto de reglas para la rama feature del repositorio que requiere confirmaciones firmadas y bloquea las inserciones forzadas para todos los usuarios, excepto los administradores del repositorio.

Para cada conjunto de reglas que crees, debes especificar a qué ramas o etiquetas del repositorio se aplica el conjunto de reglas. Puedes usar la sintaxis fnmatch para definir un patrón dirigido a ramas y etiquetas específicos. Por ejemplo, podrías usar el patrón releases/**/* para dirigirte a todas las ramas del repositorio cuyo nombre comienza por la cadena releases/. Para obtener más información sobre fnmatch, consulta Creación de conjuntos de reglas de un repositorio.

Conjuntos de reglas de inserción

Con los conjuntos de reglas de inserción, puedes bloquear las inserciones en un repositorio privado o interno y la red de bifurcación completa del 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 reglas de inserción no requieren ningún destino de rama porque se aplican a cada inserción en el repositorio.

Los conjuntos de reglas de inserción te permiten:

  • Restringir rutas de acceso de archivo: impide que se inserte la inserción de confirmaciones que incluyan cambios en las rutas de acceso de archivo especificadas.

    Para ello, puedes usar la sintaxis fnmatch. Por ejemplo, una restricción dirigida test/demo/**/* evita las inserciones en archivos o carpetas del directorio test/demo/. Un destino de restricción test/docs/pushrules.md impide que las inserciones se inserten específicamente en el archivo pushrules.md del directorio test/docs/. Para obtener más información, vea «Creación de conjuntos de reglas de un repositorio».

  • Restringir la longitud de la ruta de acceso del archivo: impide que se inserten confirmaciones que incluyan rutas de acceso de archivo que superen un límite de caracteres especificado.

  • Restringir extensiones de archivo: impide que las confirmaciones que incluyan archivos con extensiones de archivo especificadas se inserten.

  • Restringir el tamaño del archivo: evita que se inserten confirmaciones que superen un límite de tamaño de archivo especificado.

Acerca de los conjuntos de reglas de inserción para repositorios bifurcados

Las reglas de inserción se aplican a toda la red de bifurcación de un repositorio, lo que garantiza que todos los puntos de entrada del repositorio están protegidos. Por ejemplo, si bifurcas un repositorio con conjuntos de reglas de inserción habilitados, los mismos conjuntos de reglas de inserción también se aplicarán al repositorio bifurcada.

En el caso de un repositorio bifurcada, las únicas personas que tienen permisos de omisión para una regla de inserción son las personas que tienen permisos de omisión en el repositorio raíz.

Acerca de los conjuntos de reglas y las ramas protegidas

Los conjuntos de reglas funcionan junto con las reglas de protección de ramas de un repositorio. Muchas de las reglas que puedes definir en conjuntos de reglas son similares a las reglas de protección y puedes empezar a usar conjuntos de reglas sin invalidar ninguna de las reglas de protección existentes.

Los conjuntos de reglas tienen las siguientes ventajas sobre las reglas de protección de ramas.

  • A diferencia de las reglas de protección, se pueden aplicar varios conjuntos de reglas al mismo tiempo, por lo que puedes estar seguro de que todas las reglas destinadas a una rama del repositorio se evaluarán cuando alguien interactúe con esa rama. Consulta Acerca de las capas de reglas.
  • Los conjuntos de reglas tienen estados, por lo que puedes administrar fácilmente qué conjuntos de reglas están activos en un repositorio sin necesidad de eliminar conjuntos de reglas.
  • Cualquier persona con acceso de lectura a un repositorio puede ver los conjuntos de reglas activos del repositorio. Esto significa que un desarrollador puede comprender por qué utiliza una regla, o un auditor puede comprobar las restricciones de seguridad del repositorio, sin requerir el acceso del administrador al repositorio.
  • Puedes crear reglas adicionales para controlar los metadatos de las confirmaciones que se escriben en un repositorio, como el mensaje de confirmación y la dirección de correo electrónico del autor. Consulta Reglas disponibles para conjuntos de reglas en la documentación de GitHub Enterprise Cloud.

Uso de los estados de cumplimiento del conjunto de reglas

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.
  • Disabled: tu conjunto de reglas no se aplicará.

Acerca de las capas de reglas

Un conjunto de reglas no tiene prioridad. En su lugar, si varios conjuntos de reglas tienen como destino la misma rama o etiqueta en un repositorio, se agregan las reglas de cada uno de estos conjuntos de reglas. Si la misma regla se define de maneras diferentes en los conjuntos de reglas agregados, se aplica la versión más restrictiva de la regla. Además superponerse entre sí, los conjuntos de reglas también se superponen con reglas de protección que tienen como destino la misma rama o etiqueta.

Por ejemplo, considera la siguiente situación para la rama my-feature del repositorio octo-org/octo-repo.

  • Un administrador del repositorio ha configurado un conjunto de reglas destinado a la rama my-feature. Este conjunto de reglas requiere confirmaciones firmadas y tres revisiones en las solicitudes de cambios para poder combinarlas.
  • Una regla de protección de rama existente para la rama my-feature requiere un historial de confirmaciones lineales y dos revisiones en las solicitudes de cambios antes de que se puedan combinar.

Las reglas de cada origen se agregan y se aplican todas. Cuando existen varias versiones diferentes de la misma regla, el resultado es que se aplica la versión más restrictiva de la regla. Por lo tanto, la rama my-feature requiere confirmaciones firmadas y un historial de confirmaciones lineales y las solicitudes de cambios destinadas a la rama requerirán tres revisiones antes de poder combinarlas.