Skip to main content

Criar conjuntos de regras para repositórios na sua organização

Você pode criar um conjunto de regras para direcionar vários repositórios na sua organização.

Quem pode usar esse recurso?

Organization owners can create rulesets at the organization level.

Introdução

Para clientes com planos GitHub Team ou GitHub Enterprise, você pode criar conjuntos de regras em sua organização para controlar como os usuários podem interagir com os repositórios em sua organização. Você pode controlar ações como quem pode efetuar push de commits para determinado branch e como os commits precisam ser formatados ou quem pode excluir ou renomear uma tag. Você também pode impedir que as pessoas renomeiem repositórios.

Também é possível criar conjuntos de regras por push para bloquear envios por push para um repositório privado ou interno e toda a rede de bifurcação do repositório. Os conjuntos de regras por push permitem bloquear envios com base em extensões de arquivo, comprimentos de caminho de arquivo, caminhos de arquivo e pasta e tamanhos de arquivo.

Os forks não herdam conjuntos de regras de branch ou tag dos respectivos repositórios upstream. No entanto, os forks pertencentes à sua organização estão sujeitos aos conjuntos de regras que você cria, como qualquer outro repositório.

Os forks herdam conjuntos de regras por push do seu repositório raiz. As regras de push se aplicam a toda a rede de bifurcação de um repositório, garantindo que cada ponto de entrada do repositório esteja protegido. Por exemplo, se você bifurcar um repositório que tenha conjuntos de regras por push habilitados, os mesmos conjuntos de regras por push também se aplicarão ao repositório bifurcado.

Para um repositório bifurcado, as únicas pessoas que têm permissões de bypass para uma regra de push são as pessoas que têm permissões de bypass no repositório raiz.

Importar conjuntos de regras pré-criados

Para importar um dos conjuntos de regras pré-criados por GitHub, consulte github/ruleset-recipes.

Você pode importar um conjunto de regras existente usando um arquivo JSON. Isso pode ser útil se você quiser aplicar o mesmo conjunto de regras a vários repositórios ou organizações. Para obter mais informações, confira Como gerenciar conjuntos de regras para repositórios na sua organização.

Usar a sintaxe fnmatch

É possível usar a sintaxe fnmatch para definir padrões de destino ao criar um conjunto de regras.

Use o curinga * para encontrar a correspondência de qualquer cadeia de caracteres. Como o GitHub usa o sinalizador File::FNM_PATHNAME para a sintaxe File.fnmatch, o curinga * não corresponde aos separadores de diretório (/). Por exemplo, qa/* corresponderá a todos os branches que começam com qa/ e que contêm uma barra "/", mas não corresponderá a qa/foo/bar. Você pode incluir qualquer quantidade de barras "/" após qa com qa/**/*, o que corresponderá, por exemplo, a qa/foo/bar/foobar/hello-world. Você também pode estender a cadeia de caracteres qa com qa**/**/* para tornar a regra mais inclusiva.

Para obter mais informações sobre as opções de sintaxe, confira a documentação de fnmatch.

Usar status de imposição de conjunto de regras

Ao criar ou editar seu conjunto de regras, você pode usar status de imposição para configurar como seu conjunto de regras será imposto.

Você pode selecionar qualquer um dos seguintes status de imposição para seu conjunto de regras.

  • Active: seu conjunto de regras será imposto após a criação.
  • Disabled: seu conjunto de regras não será imposto.

Criar um conjunto de regras de branch ou tag

  1. No canto superior direito de GitHub, selecione sua foto de perfil e clique em Your organizations.

  2. Ao lado da organização, clique em Configurações.

  3. Na barra lateral esquerda, na seção "Código, planejamento e automação", clique em Repositório e em Conjuntos de regras.

    Captura de tela da página de configurações de uma organização. Na barra lateral, um link rotulado "Conjuntos de regras" está realçado em laranja.

  4. Clique em Novo conjunto de regras.

  5. Para criar um conjunto de regras direcionado a branches, clique em Novo conjunto de regras de branch. Como alternativa, para criar um conjunto de regras segmentando tags, clique em Novo conjunto de regras de tags.

  6. Em "Nome do conjunto de regras", digite um nome para o conjunto de regras.

  7. Opcionalmente, para alterar o status de imposição padrão, clique em Desabilitado e selecione um status de imposição. Para obter mais informações sobre os status de imposição, confira Sobre os conjuntos de regras.

Escolher quais repositórios direcionar em sua organização

Com o conjunto de regras, é possível optar por direcionar todos os repositórios da organização, repositórios da organização que correspondam a uma determinada convenção de nomenclatura, ou uma lista de repositórios selecionados manualmente na organização.

Para saber mais sobre propriedades personalizadas, confira Como gerenciar propriedades personalizadas para repositórios na sua organização.

Se um repositório for direcionado por um conjunto de regras criado no nível da organização, somente os proprietários da organização poderão editar o conjunto de regras. No entanto, as pessoas com acesso de administrador no repositório ou com uma função personalizada, incluindo a permissão "Editar regras do repositório", podem criar conjuntos de regras adicionais no nível do repositório. As regras nesses conjuntos de regras serão agregadas às regras definidas no nível da organização. O resultado é que a criação de um conjunto de regras pode tornar as regras direcionadas a uma tag ou a um branch mais restritivas, mas nunca menos restritivas. Para saber mais sobre como criar conjuntos de regras, confira Sobre os conjuntos de regras.

Como direcionar repositórios por propriedades em sua organização

Você pode direcionar repositórios em sua organização por propriedades personalizadas. Confira Como gerenciar propriedades personalizadas para repositórios na sua organização.

  1. Para definir como alvo uma lista dinâmica de repositórios em sua organização por propriedades, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione Repositories matching a filter.
  2. Para adicionar um destino, na seção de filtro, insira uma consulta, como visibility:private props.team:infra -language:java, ou Selecione por filtro.
  3. Na caixa de diálogo modal exibida, selecione propriedades personalizadas ou do sistema no menu suspenso e selecione um valor para cada propriedade.
  4. Clique em Aplicar.

Direcionar todos os repositórios em sua organização

Para definir como alvo todos os repositórios em sua organização, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione All repositories.

Direcionar repositórios selecionados em sua organização

  1. Para definir como alvo uma lista estática e selecionada manualmente de repositórios em sua organização, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione Only selected repositories.
  2. Para selecionar os repositórios a direcionar, na seção "Targeting criteria", selecione Select repositories e procure o nome de cada repositório a ser direcionado. Selecione cada repositório nos resultados da pesquisa.

Direcionar repositórios por convenção de nomenclatura em sua organização

  1. Para definir como alvo uma lista dinâmica de repositórios em sua organização por convenção de nomenclatura, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione Repositories matching a name.

  2. Para começar a definir um padrão de direcionamento, na seção "Targeting criteria", selecione Add a target e clique em Include by pattern ou em Exclude by pattern.

  3. Na caixa de diálogo modal exibida, insira um padrão de nomenclatura de repositório usando a sintaxe fnmatch e clique em Adicionar padrão de inclusão ou Adicionar padrão de exclusão. Para saber mais sobre a sintaxe fnmatch, confira Usando a sintaxe fnmatch.

    Observação

    Você pode adicionar vários critérios de direcionamento ao mesmo conjunto de regras. Por exemplo, você pode incluir todos os repositórios que correspondam ao padrão *cat* e excluir especificamente um repositório que corresponda ao padrão not-a-cat.

  4. Opcionalmente, na página de configuração do conjunto de regras, selecione Impedir renomeação de repositórios de destino.

Escolher quais branches ou tags direcionar

Para direcionar branches ou tags na seção "Branches de destino" ou "Tags de destino", selecione Adicionar um destino e escolha como deseja incluir ou excluir branches ou tags. Use a sintaxe fnmatch para incluir ou excluir branches ou tags com base em um padrão. Para obter mais informações, confira Como usar a sintaxe de fnmatch.

Você pode adicionar vários critérios de direcionamento ao mesmo conjunto de regras. Por exemplo, você pode incluir o branch padrão, incluir os branches que correspondam ao padrão *feature* e excluir especificamente um branch que corresponda ao padrão not-a-feature.

Selecionar proteções de branch ou tag

Na seção "Proteções de branch" ou "Proteções de tag", selecione as regras que deseja incluir no conjunto de regras. Ao selecionar uma regra, você poderá inserir configurações adicionais para ela. Para obter mais informações sobre as regras, confira Regras disponíveis para conjuntos de regras.

Observação

Se você selecionar Require status checks before merging, na seção "Additional settings":

  • Você poderá inserir o nome de cada verificação de status que deseja exigir. Para terminar de adicionar a verificação de status como um requisito, você deve clicar em .
  • Se você selecionar Exigir que branches sejam atualizados antes da mesclagem, deverá definir uma verificação para que a proteção entre em vigor.

Finalizar o conjunto de regras de branch ou tag e próximas etapas

Para concluir a criação do conjunto de regras, clique em Criar. Se o status de imposição do conjunto de regras for definido como "Ativo", o conjunto de regras entrará em vigor imediatamente.

Como criar um conjunto de regras por push

Observação

Esse conjunto de regras imporá restrições de push para toda a rede de fork desse repositório.

É possível criar um conjunto de regras por push para repositórios privados ou internos da organização.

  1. No canto superior direito de GitHub, selecione sua foto de perfil e clique em Your organizations.

  2. Ao lado da organização, clique em Configurações.

  3. Na barra lateral esquerda, na seção "Código, planejamento e automação", clique em Repositório e em Conjuntos de regras.

    Captura de tela da página de configurações de uma organização. Na barra lateral, um link rotulado "Conjuntos de regras" está realçado em laranja.

  4. Clique em Novo conjunto de regras.

  5. Para criar um conjunto de regras direcionado a branches, clique em Novo conjunto de regras por push.

  6. Em "Nome do conjunto de regras", digite um nome para o conjunto de regras.

  7. Opcionalmente, para alterar o status de imposição padrão, clique em Desabilitado e selecione um status de imposição. Para obter mais informações sobre os status de imposição, confira Sobre os conjuntos de regras.

Conceder permissões de bypass para seu conjunto de regras por push

Observação

As permissões de bypass para conjuntos de regras por push que têm como meta um repositório serão herdadas por toda a rede de bifurcação desse repositório. Isso significa que os únicos usuários que podem ignorar esse conjunto de regras para qualquer repositório em toda a rede de bifurcação desse repositório são os usuários que podem ignorar esse conjunto de regras no repositório raiz.

Você pode conceder a determinadas funções, equipes ou aplicativos permissões de bypass para seu conjunto de regras. Os seguintes são qualificados para acesso de bypass:

  • Administradores de repositório, proprietários da organização e proprietários corporativos
  • A função de manutenção ou gravação ou funções de repositório personalizadas com base na função de gravação
  • Teams
  • GitHub Apps
  • Dependabot. Para obter mais informações sobre o Dependabot, confira Guia de início rápido do Dependabot.
  1. Para conceder permissões de bypass para o conjunto de regras, na seção "Bypass list", clique em Add bypass.
  2. Na caixa de diálogo modal "Adicionar bypass" exibida, procure a função, a equipe ou o aplicativo ao qual você deseja conceder permissões de bypass, selecione a função, a equipe ou o aplicativo na seção "Sugestões" e clique em Adicionar selecionados.

Escolher quais repositórios direcionar em sua organização

Com o conjunto de regras, é possível optar por direcionar todos os repositórios da organização, repositórios da organização que correspondam a uma determinada convenção de nomenclatura, ou uma lista de repositórios selecionados manualmente na organização.

Para saber mais sobre propriedades personalizadas, confira Como gerenciar propriedades personalizadas para repositórios na sua organização.

Se um repositório for direcionado por um conjunto de regras criado no nível da organização, somente os proprietários da organização poderão editar o conjunto de regras. No entanto, as pessoas com acesso de administrador no repositório ou com uma função personalizada, incluindo a permissão "Editar regras do repositório", podem criar conjuntos de regras adicionais no nível do repositório. As regras nesses conjuntos de regras serão agregadas às regras definidas no nível da organização. O resultado é que a criação de um conjunto de regras pode tornar as regras direcionadas a uma tag ou a um branch mais restritivas, mas nunca menos restritivas. Para saber mais sobre como criar conjuntos de regras, confira Sobre os conjuntos de regras.

Como direcionar repositórios por propriedades em sua organização

Você pode direcionar repositórios em sua organização por propriedades personalizadas. Confira Como gerenciar propriedades personalizadas para repositórios na sua organização.

  1. Para definir como alvo uma lista dinâmica de repositórios em sua organização por propriedades, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione Repositories matching a filter.
  2. Para adicionar um destino, na seção de filtro, insira uma consulta, como visibility:private props.team:infra -language:java, ou Selecione por filtro.
  3. Na caixa de diálogo modal exibida, selecione propriedades personalizadas ou do sistema no menu suspenso e selecione um valor para cada propriedade.
  4. Clique em Aplicar.

Direcionar todos os repositórios em sua organização

Para definir como alvo todos os repositórios em sua organização, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione All repositories.

Direcionar repositórios selecionados em sua organização

  1. Para definir como alvo uma lista estática e selecionada manualmente de repositórios em sua organização, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione Only selected repositories.
  2. Para selecionar os repositórios a direcionar, na seção "Targeting criteria", selecione Select repositories e procure o nome de cada repositório a ser direcionado. Selecione cada repositório nos resultados da pesquisa.

Direcionar repositórios por convenção de nomenclatura em sua organização

  1. Para definir como alvo uma lista dinâmica de repositórios em sua organização por convenção de nomenclatura, na seção "Target repositories", ao lado de "Repository targeting criteria", selecione Repositories matching a name.

  2. Para começar a definir um padrão de direcionamento, na seção "Targeting criteria", selecione Add a target e clique em Include by pattern ou em Exclude by pattern.

  3. Na caixa de diálogo modal exibida, insira um padrão de nomenclatura de repositório usando a sintaxe fnmatch e clique em Adicionar padrão de inclusão ou Adicionar padrão de exclusão. Para saber mais sobre a sintaxe fnmatch, confira Usando a sintaxe fnmatch.

    Observação

    Você pode adicionar vários critérios de direcionamento ao mesmo conjunto de regras. Por exemplo, você pode incluir todos os repositórios que correspondam ao padrão *cat* e excluir especificamente um repositório que corresponda ao padrão not-a-cat.

  4. Opcionalmente, na página de configuração do conjunto de regras, selecione Impedir renomeação de repositórios de destino.

Selecionar proteções push

É possível bloquear envios por push para este repositório e toda a rede de bifurcação desse repositório com base em extensões de arquivo, comprimentos de caminho de arquivo, caminhos de arquivo e pasta e tamanhos de arquivo.

Qualquer proteção por push que você configurar bloqueará pushes nesse repositório e em toda a rede de bifurcação desse repositório.

  1. Em "Proteções por push", clique nas restrições que você deseja aplicar. Em seguida, preencha os detalhes das restrições selecionadas.

    Para restrições de caminho de arquivo, é possível usar caminhos parciais ou completos. É possível usar a sintaxe fnmatch para essa finalidade. Por exemplo, uma segmentação de restrição test/demo/**/* impede qualquer envio por push para arquivos ou pastas no diretório test/demo/. Uma segmentação de restrição test/docs/pushrules.md impede envios por push especificamente para o arquivo pushrules.md no diretório test/docs/. Para saber mais, confira Criar conjuntos de regras para um repositório.

Finalizar seu conjunto de regras por push e próximas etapas

Para concluir a criação do conjunto de regras, clique em Criar. Se o status de imposição do conjunto de regras for definido como "Ativo", o conjunto de regras entrará em vigor imediatamente.