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 y ver la información del conjunto de reglas. Para más información, consulta "Acerca de los roles de repositorio personalizados".

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.

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

Acerca de los conjuntos de reglas

Un conjunto de reglas es una lista de reglas con nombre que se aplican a un repositorio, o a varios repositorios de una organización. Puedes tener hasta 75 conjuntos de reglas por repositorio y 75 conjuntos de reglas de toda la organización.

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.

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 y cómo se debe dar formato a las confirmaciones, 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 o a qué repositorios de su organización se aplica el conjunto de reglas. Puedes usar la sintaxis fnmatch para definir un patrón dirigido a ramas, etiquetas y repositorios 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, las ramas protegidas y las etiquetas protegidas

Los conjuntos de reglas funcionan junto con las reglas de protección de ramas y las reglas de protección de etiquetas 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.

Además, puede importar reglas de protección de etiquetas existentes en los conjuntos de reglas del repositorio. Esto implementará las mismas protecciones de etiquetas que tienes actualmente para el repositorio. Consulta Configuración de reglas de protección de etiquetas.

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

  • 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 o etiqueta del repositorio se evaluarán cuando alguien interactúe con esa rama o etiqueta. 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.
  • 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 obtener más información, vea «Administración de conjuntos de reglas de un repositorio».

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.
  • Un administrador de la organización octo-org también ha configurado un conjunto de reglas destinado a la rama my-feature del repositorio octo-repo. El conjunto de reglas bloquea las inserciones forzadas y requiere una revisión de las solicitudes de cambios para poder combinarlas.

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, las inserciones forzadas se bloquean y las solicitudes de cambios destinadas a la rama requerirán tres revisiones antes de poder combinarlas.