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ção | Valor |
|---|---|
| Nome da org | middag-io |
| Plano | GitHub Team |
| Visibilidade padrão | Privado |
| Permissão padrão | Read |
| 2FA | Obrigatório para todos |
Teams
| Team | Permissão | Propósito |
|---|---|---|
engineering | Write | Todos os desenvolvedores |
admin | Admin | Administração da org, gerenciamento de repos |
bots | Write | Bots CI/CD, service accounts |
# 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=member2. 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).
# 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
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]=trueConsultar repos por propriedade
# 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.
# 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.
# 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 reposVariáveis no nível da org
# 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-ioVariáveis no nível do repo (feature flags)
# 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 repo | Visibilidade | Motivo |
|---|---|---|
| Aplicação | Privado | Código proprietário |
| Infraestrutura | Privado | Contém configs de deploy e refs de secrets |
.github | Público | Perfil da org visível no github.com |
| Bibliotecas PHP | Privado | Distribuídas via privatesatis |
| Forks | Público | Licença upstream exige |
Alterando visibilidade
# Tornar repo público
gh repo edit middag-io/{repo} --visibility public
# Tornar repo privado
gh repo edit middag-io/{repo} --visibility privateAcesso para colaboradores externos
# 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 DELETE7. Tarefas de Manutenção
Revisão periódica
| Tarefa | Frequência | Como |
|---|---|---|
| Auditar membros dos teams | Mensal | gh api orgs/middag-io/teams/engineering/members |
| Revisar convites pendentes | Semanal | gh api orgs/middag-io/invitations |
| Verificar repos inativos | Trimestral | gh repo list middag-io --json name,pushedAt |
| Verificar rulesets | Trimestral | gh api orgs/middag-io/rulesets |
| Rotacionar tokens SA 1Password | Anual | Veja G03 |
Transferir repo para org
# De conta pessoal para org
gh api repos/{user}/{repo}/transfer -f new_owner=middag-ioArquivar repo
gh repo archive middag-io/{repo}