Automatiza a gestão de organizações GitHub: inventaria repositórios, sincroniza labels conforme config/labels.yaml, atualiza dados de Projects (v2) e gerencia campos de data em issues — tudo autenticado via GitHub App e API GraphQL.
poetry run python main.py --repos-list
# ou
poetry run task repos-listGera config/repos_list.csv com todos os repositórios da organização.
poetry run python main.py --projects-panels-list
# ou
poetry run task projects-panels-listExtrai dados completos dos projetos GitHub (Projects v2) e gera config/projects-panels-info.yml e config/projects-panels-list.yml.
poetry run python main.py --sync-labels
# ou
poetry run task sync-labels
# remove labels extras (modo completo)
poetry run python main.py --sync-labels --delete-extras
# ou
poetry run task sync-labels-delete-extrasPor padrão, a sincronização é aditiva: garante que todos os repositórios tenham as labels definidas em config/labels.yaml (criando/atualizando quando necessário) sem remover labels extras; a exclusão só ocorre com --delete-extras.
ATENÇÃO: Se eventualmente alguém atualizar manualmente o nome de uma label existente (por exemplo, alterar de "bug" para "bugs") sem alterar as default-labels em 'config/labels.yaml e os scripts de sincronização de labels deste repositório rodarem com o parâmetro "--delete-extras", a label "bugs" será removida de todos os issues onde estava aplicada, e uma nova label "bug" criarda.
Recomendação: Se precisar alterar o nome de uma label, considere:
- Criar uma nova label com o nome desejado
- Aplicar a nova label nos issues que tinham a label antiga
- Remover a label antiga apenas após a migração
- Atualizar o template
config/labels.yamlcom o novo nome da label - Executar os protocolos de sincronização (
poetry run python main.py --sync-labels)
poetry run python main.py --issues-close-date
# ou
poetry run task issues-close-dateGerencia automaticamente o campo "Data Fim" em issues baseado no status e data de fechamento dos isses dos últimos 7 dias.
poetry run python main.py --all
# ou
poetry run task all- Criar arquivo
.envna raiz do projeto (GitHub App):
cp .env.example .env- Configuração de autenticação
A autenticação é feita via GitHub App (nome: verificacoes-github-splor-mg). O sistema gera um JWT assinado com a chave privada do App e o troca por um token de instalação temporário, eliminando a necessidade de PATs. Para GitHub Actions, configure os seguintes secrets:
GH_APP_ID: ID numérico do GitHub AppGH_APP_INSTALLATION_ID: ID da instalação do App na organizaçãoGH_APP_PRIVATE_KEY: Chave privada do App (formato PEM)
- Python 3.11+
- Poetry
poetry install