Skip to main content

Creación de conjuntos de reglas para repositorios de la organización

Puedes crear un conjunto de reglas para tener como destino varios repositorios de tu organización.

¿Quién puede utilizar esta característica?

Organization owners can create rulesets at the organization level.

Introducción

Para los clientes de los planes GitHub Team o GitHub Enterprise puedes crear conjuntos de reglas en tu organización para controlar cómo los usuarios pueden interactuar con los repositorios de tu organización. 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.

Las bifurcaciones no heredan conjuntos de reglas o etiquetas de sus repositorios ascendentes. Sin embargo, las bifurcaciones que pertenecen a tu organización están sujetas a los conjuntos de reglas que crees, como cualquier otro repositorio.

Las bifurcaciones heredan los conjuntos de reglas de inserción de su repositorio raíz. 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.

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

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 la esquina superior derecha de GitHub, selecciona la foto del perfil y haz clic en Tus organizaciones.

  2. Junto a la organización, haga clic en Settings.

  3. En la barra lateral izquierda, en la sección "Código, planeamiento y automatización", haz clic en Repositorio y, luego, haz clic en Conjuntos de reglas.

    Captura de pantalla de la página de configuración de una organización. En la barra lateral, aparece un vínculo etiquetado como "Conjuntos de reglas" con 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. Como alternativa, para crear etiquetas de destino de un conjunto de reglas, haz clic en Nuevo conjunto de reglas de etiquetas.

  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, consulta Acerca de los conjuntos de reglas.

Elección de los repositorios de destino en la organización

Con el conjunto de reglas, puedes elegir tener como destino todos los repositorios de la organización, repositorios de la organización que coincidan con una determinada convención de nomenclatura, repositorios en tu organización que tienen propiedades personalizadas o una lista de repositorios seleccionados manualmente en la organización.

Para obtener más información sobre las propiedades personalizadas, consulta Administración de propiedades personalizadas para repositorios de la organización.

Si un repositorio tiene como destino un conjunto de reglas creado en el nivel de organización, solo los propietarios de la organización pueden editar el conjunto de reglas. Sin embargo, los usuarios con acceso de administrador al repositorio o con un rol personalizado, incluido el permiso "editar reglas del repositorio", pueden crear conjuntos de reglas adicionales en el nivel de repositorio. Las reglas de estos conjuntos de reglas se agregarán con las reglas definidas en el nivel de organización. El resultado es que la creación de un nuevo conjunto de reglas puede hacer que las reglas destinadas a una rama o etiqueta sean más restrictivas, pero nunca menos restrictivas. Para obtener más información sobre la creación de conjuntos de reglas, consulta Acerca de los conjuntos de reglas.

Establecer repositorios como destinos por propiedades en tu organización

Puede dirigirse a repositorios de su organización mediante propiedades personalizadas. Consulta Administración de propiedades personalizadas para repositorios de la organización.

  1. Para establecer como destino una lista dinámica de repositorios de la organización por propiedades, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona Repositories matching a filter.
  2. Para agregar un destino, en la sección de filtro, escribe una consulta, por ejemplo, visibility:private props.team:infra -language:java o Select by filter.
  3. En el cuadro de diálogo modal que aparece, selecciona propiedades personalizadas o del sistema en el menú desplegable y, después, selecciona un valor para cada propiedad.
  4. Haga clic en Aplicar.

Destino de todos los repositorios de la organización

Para establecer como destino todos los repositorios de la organización, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona All repositories.

Destino de repositorios seleccionados en la organización

  1. Para establecer como destino una lista estática y seleccionada manualmente de repositorios de la organización, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona Only selected repositories.
  2. Para seleccionar repositorios de destino, en la sección "Targeting criteria", selecciona Select repositories y busca el nombre de cada repositorio al que deseas dirigirte. Selecciona cada repositorio en los resultados de la búsqueda.

Destino de repositorios por convención de nomenclatura en la organización

  1. Para establecer como destino una lista dinámica de repositorios de la organización por convención de nomenclatura, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona Repositories matching a name.

  2. Para empezar a definir un patrón de destino, en la sección "Criterios de destino", selecciona Add a target y luego haz clic en Include by pattern o Exclude by pattern.

  3. En el cuadro de diálogo modal que aparece, escribe un patrón de nomenclatura de repositorio mediante la sintaxis fnmatch y, a continuación, haz clic en Agregar patrón de inclusión o Agregar patrón de exclusión. Para obtener más información sobre la sintaxis de fnmatch, consulta Uso de la sintaxis de fnmatch.

    Nota:

    Puedes agregar varios criterios de selección de destino al mismo conjunto de reglas. Por ejemplo, podrías incluir cualquier repositorio que coincida con el patrón *cat* y, a continuación, excluir específicamente un repositorio que coincida con el patrón not-a-cat.

  4. Opcionalmente, en la página de configuración del conjunto de reglas, selecciona Impedir cambiar el nombre de los repositorios de destino.

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

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 más información sobre las reglas, consulta Reglas disponibles para conjuntos de reglas.

Nota:

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.

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

Nota:

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 de tu organización.

  1. En la esquina superior derecha de GitHub, selecciona la foto del perfil y haz clic en Tus organizaciones.

  2. Junto a la organización, haga clic en Settings.

  3. En la barra lateral izquierda, en la sección "Código, planeamiento y automatización", haz clic en Repositorio y, luego, haz clic en Conjuntos de reglas.

    Captura de pantalla de la página de configuración de una organización. En la barra lateral, aparece un vínculo etiquetado como "Conjuntos de reglas" con 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, consulta Acerca de los conjuntos de reglas.

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

Nota:

Omitir los permisos de los conjuntos de reglas de inserción que tienen como destino un repositorio serán heredados por toda la red de bifurcación para 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
  • Equipos
  • GitHub Apps
  • Dependabot. Para más información sobre Dependabot, consulta Guía de inicio rápido de Dependabot.
  1. A fin de conceder permisos de omisión para el conjunto de reglas, en la sección "Bypass list", haz clic en Add bypass.
  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.

Elección de los repositorios de destino en la organización

Con el conjunto de reglas, puedes elegir tener como destino todos los repositorios de la organización, repositorios de la organización que coincidan con una determinada convención de nomenclatura, repositorios en tu organización que tienen propiedades personalizadas o una lista de repositorios seleccionados manualmente en la organización.

Para obtener más información sobre las propiedades personalizadas, consulta Administración de propiedades personalizadas para repositorios de la organización.

Si un repositorio tiene como destino un conjunto de reglas creado en el nivel de organización, solo los propietarios de la organización pueden editar el conjunto de reglas. Sin embargo, los usuarios con acceso de administrador al repositorio o con un rol personalizado, incluido el permiso "editar reglas del repositorio", pueden crear conjuntos de reglas adicionales en el nivel de repositorio. Las reglas de estos conjuntos de reglas se agregarán con las reglas definidas en el nivel de organización. El resultado es que la creación de un nuevo conjunto de reglas puede hacer que las reglas destinadas a una rama o etiqueta sean más restrictivas, pero nunca menos restrictivas. Para obtener más información sobre la creación de conjuntos de reglas, consulta Acerca de los conjuntos de reglas.

Establecer repositorios como destinos por propiedades en tu organización

Puede dirigirse a repositorios de su organización mediante propiedades personalizadas. Consulta Administración de propiedades personalizadas para repositorios de la organización.

  1. Para establecer como destino una lista dinámica de repositorios de la organización por propiedades, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona Repositories matching a filter.
  2. Para agregar un destino, en la sección de filtro, escribe una consulta, por ejemplo, visibility:private props.team:infra -language:java o Select by filter.
  3. En el cuadro de diálogo modal que aparece, selecciona propiedades personalizadas o del sistema en el menú desplegable y, después, selecciona un valor para cada propiedad.
  4. Haga clic en Aplicar.

Destino de todos los repositorios de la organización

Para establecer como destino todos los repositorios de la organización, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona All repositories.

Destino de repositorios seleccionados en la organización

  1. Para establecer como destino una lista estática y seleccionada manualmente de repositorios de la organización, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona Only selected repositories.
  2. Para seleccionar repositorios de destino, en la sección "Targeting criteria", selecciona Select repositories y busca el nombre de cada repositorio al que deseas dirigirte. Selecciona cada repositorio en los resultados de la búsqueda.

Destino de repositorios por convención de nomenclatura en la organización

  1. Para establecer como destino una lista dinámica de repositorios de la organización por convención de nomenclatura, en la sección "Target repositories", junto a "Repository targeting criteria" selecciona Repositories matching a name.

  2. Para empezar a definir un patrón de destino, en la sección "Criterios de destino", selecciona Add a target y luego haz clic en Include by pattern o Exclude by pattern.

  3. En el cuadro de diálogo modal que aparece, escribe un patrón de nomenclatura de repositorio mediante la sintaxis fnmatch y, a continuación, haz clic en Agregar patrón de inclusión o Agregar patrón de exclusión. Para obtener más información sobre la sintaxis de fnmatch, consulta Uso de la sintaxis de fnmatch.

    Nota:

    Puedes agregar varios criterios de selección de destino al mismo conjunto de reglas. Por ejemplo, podrías incluir cualquier repositorio que coincida con el patrón *cat* y, a continuación, excluir específicamente un repositorio que coincida con el patrón not-a-cat.

  4. Opcionalmente, en la página de configuración del conjunto de reglas, selecciona Impedir cambiar el nombre de los repositorios de destino.

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 más información, consulta 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.