Skip to content

Administração da Org GitHub — middag-io

Teams, rulesets, custom properties, visibilidade e controle de acesso. Referências: ADR-001, ADR-002.

1. Estrutura da Organização

Configurações da org

ConfiguraçãoValor
Nome da orgmiddag-io
PlanoGitHub Team
Visibilidade padrãoPrivado
Permissão padrãoRead
2FAObrigatório para todos

Teams

TeamPermissãoPropósito
engineeringWriteTodos os desenvolvedores
adminAdminAdministração da org, gerenciamento de repos
botsWriteBots CI/CD, service accounts
bash
# Criar team
gh api orgs/middag-io/teams -f name=engineering -f permission=push -f privacy=closed

# Adicionar membro
gh api orgs/middag-io/teams/engineering/memberships/{username} -X PUT -f role=member

2. Rulesets de Repositório

Veja ADR-002 — Modelo de Branches para regras completas de proteção de branch e fluxo.

Rulesets são configurados no nível da org e se aplicam a todos os repos automaticamente. Dois rulesets: main-protection (PR + 1 aprovação + status checks) e develop-protection (PR + status checks).

bash
# Visualizar rulesets
gh api orgs/middag-io/rulesets --jq '.[].name'

# Visualizar ruleset específico
gh api orgs/middag-io/rulesets/{id}

Bypass para repo .github

O repo org .github permite pushes diretos em main por admins da org (sem PR obrigatória). Mudanças de workflow precisam chegar rápido e são testadas pelos repos consumidores.

3. Custom Properties

Custom properties permitem filtrar repos na org. Veja ADR-001 — Convenção de Nomes de Repositórios para as propriedades definidas e seus valores.

Definir propriedades

bash
gh api repos/middag-io/{repo}/properties/values \
  -X PATCH \
  -f properties[][property_name]=platform -f properties[][value]=wordpress \
  -f properties[][property_name]=component-type -f properties[][value]=plugin \
  -f properties[][property_name]=deploy-target -f properties[][value]=production \
  -f properties[][property_name]=has-ci -f properties[][value]=true

Consultar repos por propriedade

bash
# Todos os plugins WordPress
gh api orgs/middag-io/properties/values \
  --jq '.[] | select(.properties[] | select(.property_name=="platform" and .value=="wordpress")) | .repository_full_name'

# Todos os repos com deploy em produção
gh api orgs/middag-io/properties/values \
  --jq '.[] | select(.properties[] | select(.property_name=="deploy-target" and .value=="production")) | .repository_full_name'

4. Topics

Topics são obrigatórios por repo. Veja ADR-001 — Convenção de Nomes de Repositórios para as categorias de topics obrigatórios e valores.

bash
# Adicionar topics
gh repo edit middag-io/{repo} --add-topic wordpress,plugin,middag

# Listar repos por topic
gh repo list middag-io --topic wordpress --json name --jq '.[].name'

5. Secrets e Variáveis

Secrets no nível da org

Gerenciados em GitHub org settings → Secrets and variables → Actions.

bash
# Listar secrets da org
gh secret list --org middag-io

# Definir secret da org
gh secret set SECRET_NAME --org middag-io

# Definir com restrição de visibilidade
gh secret set SECRET_NAME --org middag-io --visibility private  # apenas repos privados
gh secret set SECRET_NAME --org middag-io --visibility all      # todos os repos

Variáveis no nível da org

bash
# Listar variáveis da org
gh variable list --org middag-io

# Definir variável da org
gh variable set VAR_NAME --body "value" --org middag-io

Variáveis no nível do repo (feature flags)

bash
# Definir variável de repo
gh variable set PUSH_TO_ECR --body "true" --repo middag-io/{repo}

Veja G01 — Guia CI/CD para a referência completa de secrets/variáveis e ADR-005 — Integração 1Password + GitHub para nomenclatura de vaults e setup de service account.

6. Visibilidade e Acesso

Visibilidade de repositório

Tipo de repoVisibilidadeMotivo
AplicaçãoPrivadoCódigo proprietário
InfraestruturaPrivadoContém configs de deploy e refs de secrets
.githubPúblicoPerfil da org visível no github.com
Bibliotecas PHPPrivadoDistribuídas via privatesatis
ForksPúblicoLicença upstream exige

Alterando visibilidade

bash
# Tornar repo público
gh repo edit middag-io/{repo} --visibility public

# Tornar repo privado
gh repo edit middag-io/{repo} --visibility private

Acesso para colaboradores externos

bash
# Adicionar colaborador com acesso de leitura
gh api repos/middag-io/{repo}/collaborators/{username} -X PUT -f permission=pull

# Remover colaborador
gh api repos/middag-io/{repo}/collaborators/{username} -X DELETE

7. Tarefas de Manutenção

Revisão periódica

TarefaFrequênciaComo
Auditar membros dos teamsMensalgh api orgs/middag-io/teams/engineering/members
Revisar convites pendentesSemanalgh api orgs/middag-io/invitations
Verificar repos inativosTrimestralgh repo list middag-io --json name,pushedAt
Verificar rulesetsTrimestralgh api orgs/middag-io/rulesets
Rotacionar tokens SA 1PasswordAnualVeja G03

Transferir repo para org

bash
# De conta pessoal para org
gh api repos/{user}/{repo}/transfer -f new_owner=middag-io

Arquivar repo

bash
gh repo archive middag-io/{repo}

MIDDAG Tecnologia