Skip to main content

Creación de conjuntos de reglas de un repositorio

Puedes agregar conjuntos de reglas a un repositorio para controlar cómo los usuarios pueden interactuar con ramas y etiquetas específicas.

¿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.

Introducción

Puede crear conjuntos de reglas para controlar cómo los usuarios 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. También puedes impedir que los usuarios cambien el nombre de los repositorios.

También puedes crear conjuntos de reglas de inserción para bloquear inserciones en un repositorio privado o interno y toda la red de bifurcación del repositorio. Los conjuntos de reglas de inserción permiten bloquear inserciones basadas en extensiones de archivo, longitudes de ruta de acceso de archivo, rutas de acceso de archivo y carpetas y tamaños de archivo.

Al crear un conjunto de reglas, puede permitir que determinados usuarios omitan las reglas del conjunto de reglas.

Para obtener más información sobre los conjuntos de reglas, consulta Acerca de los conjuntos de reglas.

Importación de conjuntos de reglas creados previamente

Para importar uno de los conjuntos de reglas creados previamente por GitHub, vea 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. Para obtener más información, consulta Administración de conjuntos de reglas para repositorios de la organización..

Uso de la sintaxis fnmatch

Puedes usar la sintaxis fnmatch para definir patrones de destino al crear un conjunto de reglas.

Puede usar el carácter comodín * para que coincida con cualquier cadena de caracteres. Como GitHub usa la marca File::FNM_PATHNAME para la sintaxis File.fnmatch, el carácter comodín * no coincide con los separadores de directorios (/). Por ejemplo, qa/* coincidirá con todas las ramas que comienzan por qa/ y que contienen una sola barra diagonal, pero no coincidirá con qa/foo/bar. Puedes incluir cualquier número de barras diagonales después de qa con qa/**/*, que coincidiría, por ejemplo, con qa/foo/bar/foobar/hello-world. También puedes extender la cadena qa con qa**/**/* para que la regla sea más inclusiva.

Para más información sobre las opciones de sintaxis, consulta la documentación de fnmatch.

Sintaxis fnmatch no admitida

Nota: No todas las expresiones de la sintaxis fnmatch se admiten en las reglas de protección de ramas. Ten presente las siguientes consideraciones:

  • No se puede usar el carácter de barra diagonal inversa (\) como carácter de comillas, ya que GitHub no admite el uso de barras diagonales inversas en las reglas de protección de ramas.
  • Puedes especificar juegos de caracteres entre corchetes ([]), pero actualmente no puedes complementar un conjunto con el operador ^ (por ejemplo, [^charset]).
  • Aunque GitHub admite File::FNM_PATHNAME en la sintaxis de fnmatch, File::FNM_EXTGLOB no se admite.

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á.

Creación de un conjunto de reglas de rama o etiqueta

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la barra lateral izquierda, en "Código y automatización", haz clic en Reglas y, a continuación, haz clic en Conjuntos de reglas.

    Captura de pantalla de la barra lateral de la página "Configuración" de un repositorio. El submenú "Reglas" se expande y la opción "Conjuntos de reglas" tiene un contorno naranja.

  4. Haga clic en Nuevo conjunto de reglas.

  5. Para crear un conjunto de reglas que tenga como destino ramas, haz clic en Nuevo conjunto de reglas de rama.

  6. Como alternativa, para crear etiquetas de destino de un conjunto de reglas, haz clic en Nuevo conjunto de reglas de etiquetas.

  7. En «Nombre del conjunto de reglas», escribe un nombre para el conjunto de reglas.

  8. 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, consulte «Acerca de los conjuntos de reglas».

Concesión de permisos de derivación para tu rama o el conjunto de reglas

Puede conceder determinados roles, equipos o aplicaciones que permisos de omisión para el conjunto de reglas. Los siguientes son aptos para omitir el acceso:

  • Administradores de repositorios, propietarios de organizaciones y propietarios de empresas
  • Rol de mantenimiento o escritura, o roles de repositorio personalizados basados en el rol de escritura
  • Teams
  • GitHub Apps
  • Dependabot. Para obtener más información sobre Dependabot, consulta "Guía de inicio rápido de Dependabot".
  1. Para conceder permisos de omisión para el conjunto de reglas, en la sección "Lista de omisión", haga clic en Agregar omisión.

  2. En el cuadro de diálogo modal "Agregar omisión" que aparece, busque el rol, el equipo o la aplicación que desea conceder permisos de omisión y, a continuación, seleccione el rol, el equipo o la aplicación en la sección "Sugerencias" y haga clic en Agregar seleccionado.

  3. 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.

Elección de las ramas o etiquetas de destino

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 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.

Selección de protecciones de rama o etiqueta

En la sección "Protecciones de ramas" o "Protecciones de etiquetas", selecciona las reglas que deseas incluir en el conjunto de reglas. Al seleccionar una regla, es posible que puedas especificar una configuración adicional para la regla. Para obtener más información sobre las reglas, consulta "Reglas disponibles para conjuntos de reglas".

Note

Si seleccionas Require status checks before merging, en la sección "Additional settings":

  • Puedes escribir el nombre de cada comprobación de estado que quieres requerir. Para terminar de agregar la comprobación de estado como requisito, debes hacer clic en .
  • Si seleccionas Requerir que las ramas estén actualizadas antes de combinar, debes definir una comprobación para que la protección surta efecto.

Adición de restricciones de metadatos

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.

  1. 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.

  2. 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.

  3. 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 obtener más información, consulta «Acerca de las expresiones regulares para los metadatos de confirmación» en la documentación GitHub Enterprise Cloud.

    Cualquier persona que vea los conjuntos de reglas de un repositorio podrá ver la descripción que proporciones.

  4. 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".

Finalización del conjunto de reglas de tu rama o etiqueta y pasos siguientes

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.

Creación de un conjunto de reglas de inserción

Note

Este conjunto de reglas aplicará restricciones de inserción para toda la red de bifurcación de este repositorio.

Puedes crear un conjunto de reglas de inserción para repositorios privados o internos.

  1. En GitHub, navegue hasta la página principal del repositorio.

  2. En el nombre del repositorio, haz clic en Configuración. Si no puedes ver la pestaña "Configuración", selecciona el menú desplegable y, a continuación, haz clic en Configuración.

    Captura de pantalla de un encabezado de repositorio en el que se muestran las pestañas. La pestaña "Configuración" está resaltada con un contorno naranja oscuro.

  3. En la barra lateral izquierda, en "Código y automatización", haz clic en Reglas y, a continuación, haz clic en Conjuntos de reglas.

    Captura de pantalla de la barra lateral de la página "Configuración" de un repositorio. El submenú "Reglas" se expande y la opción "Conjuntos de reglas" tiene un contorno naranja.

  4. Haga clic en Nuevo conjunto de reglas.

  5. Para crear un conjunto de reglas que tenga como destino ramas, haz clic en Nuevo conjunto de reglas de inserción.

  6. En «Nombre del conjunto de reglas», escribe un nombre para el conjunto de reglas.

  7. 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, consulte «Acerca de los conjuntos de reglas».

Concesión de permisos de omisión para el conjunto de reglas de inserción

Note

Los permisos de anulación de las reglas de inserción de este repositorio serán heredados por toda la red de bifurcaciones de este repositorio. 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.

Puede conceder determinados roles, equipos o aplicaciones que permisos de omisión para el conjunto de reglas. Los siguientes son aptos para omitir el acceso:

  • Administradores de repositorios, propietarios de organizaciones y propietarios de empresas
  • Rol de mantenimiento o escritura, o roles de repositorio personalizados basados en el rol de escritura
  • Teams
  • GitHub Apps
  • Dependabot. Para obtener más información sobre Dependabot, consulta "Guía de inicio rápido de Dependabot".
  1. Para conceder permisos de omisión para el conjunto de reglas, en la sección "Lista de omisión", haga clic en Agregar omisión.
  2. En el cuadro de diálogo modal "Agregar omisión" que aparece, busque el rol, el equipo o la aplicación que desea conceder permisos de omisión y, a continuación, seleccione el rol, el equipo o la aplicación en la sección "Sugerencias" y haga clic en Agregar seleccionado.

Selección de protecciones de inserción

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.

  1. 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 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».

Finalización del conjunto de reglas de inserción y pasos siguientes

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.