Crie repositórios padronizados, seguros e prontos para produção com um único comando. O Repo Bootstrap automatiza o setup de novos projetos, garantindo que todas as boas práticas da organização sejam aplicadas desde o primeiro commit.
- O que é?
- O que isso resolve
- Como funciona
- Uso Rápido
- Variáveis de Ambiente
- Templates Disponíveis
- Permissões do Token
- Arquitetura
- Exemplos de Uso
- Segurança
O Repo Bootstrap é uma ferramenta baseada em Docker que automatiza a criação de novos repositórios na organização MRI Qbox Brasil. Em um único comando, ele:
- ✅ Cria o repositório
- ✅ Aplica o template correto
- ✅ Configura proteções de branch
- ✅ Define labels e secrets
- ✅ Sincroniza o conteúdo do template
| Problema | Solução do Repo Bootstrap |
|---|---|
| 🔒 Branches desprotegidas | Proteção automática (main) |
| 👀 Code review inexistente | Exigência de PR com aprovação |
| 🧪 CI/CD não obrigatório | Checks obrigatórios como barreira |
| 🔁 Fluxo manual | Auto-merge e squash automáticos |
| 🏷️ Falta de padronização | Labels, infra e secrets via script |
| 📦 Múltiplos templates | Suporte a diferentes tipos (React, Basic) |
O processo é executado dentro de um container Docker que:
graph LR
A[Autentica no GitHub] --> B[Resolve template em templates.json]
B --> C[Cria novo repositório]
C --> D[Clona e força sync do template]
D --> E[Executa scripts de setup]
E --> F[Configura proteções e secrets]
- Autentica no GitHub via CLI (
gh) - Resolve o template correto em
templates.json - Cria o novo repositório na organização
- Sincronização Garantida: Clona e força o conteúdo do template para o novo repo
- Executa scripts de setup para aplicar proteções (opcional), labels e secrets
docker run \
-e GITHUB_TOKEN=seu_token \
-e REPO_NAME=nome_do_repositorio \
-e TEMPLATE_NAME=fivem-basic \
ghcr.io/mri-qbox-brasil/repo-bootstrap:latestdocker run \
-e GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx \
-e REPO_NAME=meu-script-qbx \
-e TEMPLATE_NAME=fivem-basic \
-e PROTECTED=true \
-e PR_TEAM=merge \
-e PRIVATE=true \
-e BRANCH=main \
-e REQUIRED_CHECK=CI \
ghcr.io/mri-qbox-brasil/repo-bootstrap:latest| Variável | Obrigatório | Padrão | Descrição |
|---|---|---|---|
GITHUB_TOKEN |
Sim | — | Token de autenticação do GitHub |
REPO_NAME |
Sim | — | Nome do repositório a ser criado |
TEMPLATE_NAME |
Não | — | Nome do template a ser utilizado |
PRIVATE |
Não | false |
Se o repositório deve ser privado |
PROTECTED |
Não | true |
Se o branch deve ser protegido |
BRANCH |
Não | main |
Branch principal |
REQUIRED_CHECK |
Não | CI |
Nome do check requerido para o branch |
Centralize as configurações em um arquivo .env:
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
REPO_NAME=meu-script-qbx
TEMPLATE_NAME=fivem-basic
PROTECTED=true
PRIVATE=trueO sistema utiliza uma arquitetura baseada em branches, mapeados em templates.json:
{
"fivem-basic": {
"repo": "mri-Qbox-Brasil/template-fivem",
"branch": "main"
},
"fivem-react": {
"repo": "mri-Qbox-Brasil/template-fivem",
"branch": "react"
}
}| Nome | Descrição | Repositório Base |
|---|---|---|
fivem-basic |
Template padrão para scripts FiveM | template-fivem (main) |
fivem-react |
Template com React/WebUI | template-fivem (react) |
O GITHUB_TOKEN utilizado precisa das seguintes permissões:
| Permissão | Nível | Motivo |
|---|---|---|
repo |
Full control | Criar e modificar repositórios |
workflow |
Write | Acessar GitHub Actions |
write:packages |
Write | Publicar packages (se necessário) |
admin:org |
Admin | Gerenciar times e proteções (opcional) |
- Acesse GitHub Settings → Personal access tokens
- Clique em Generate new token (classic)
- Selecione as permissões acima
- Copie o token (
ghp_xxx...)
repo-bootstrap/
├── Dockerfile # Imagem Docker
├── entrypoint.sh # Script de entrada
├── templates.json # Mapeamento de templates
├── scripts/
│ ├── create-repo.sh # Criação do repo
│ ├── setup-protection.sh # Proteção de branch
│ ├── setup-labels.sh # Labels automáticas
│ └── setup-secrets.sh # Secrets da organização
├── .env.example # Exemplo de configuração
└── README.md
| Passo | Script | Ação |
|---|---|---|
| 1 | entrypoint.sh |
Valida variáveis de ambiente |
| 2 | create-repo.sh |
Cria repo via gh repo create |
| 3 | Git operations | Clona template e força push |
| 4 | setup-protection.sh |
Configura branch protection |
| 5 | setup-labels.sh |
Adiciona labels padrão |
| 6 | setup-secrets.sh |
Injeta secrets da org |
docker run \
-e GITHUB_TOKEN=$MY_TOKEN \
-e REPO_NAME=mri_Qcrafthing \
-e TEMPLATE_NAME=fivem-basic \
-e PROTECTED=true \
ghcr.io/mri-qbox-brasil/repo-bootstrap:latestdocker run \
-e GITHUB_TOKEN=$MY_TOKEN \
-e REPO_NAME=mri_Qhud \
-e TEMPLATE_NAME=fivem-react \
-e PRIVATE=false \
ghcr.io/mri-qbox-brasil/repo-bootstrap:latest# Crie o .env
cat > .env << EOF
GITHUB_TOKEN=ghp_xxx
REPO_NAME=meu-novo-script
TEMPLATE_NAME=fivem-basic
PROTECTED=true
EOF
# Execute
docker run --env-file .env ghcr.io/mri-qbox-brasil/repo-bootstrap:latest| Prática | Descrição |
|---|---|
| 🔒 Token Scope | Use tokens com escopo mínimo necessário |
| 🕒 Token Rotation | Rotacione tokens periodicamente |
| 🚫 Não commite tokens | Nunca deixe tokens no código |
| ✅ Use .env | Arquivos .env estão no .gitignore |
| 🔍 Audit Logs | Monitore uso dos tokens no GitHub |
# ❌ ERRADO - Token exposto
docker run -e GITHUB_TOKEN=ghp_1234567890abcdef...
# ✅ CORRETO - Usar .env ou secret
docker run --env-file .env ...Após a execução bem-sucedida:
✅ Repositório criado: mri-Qbox-Brasil/meu-script
✅ Conteúdo sincronizado do template: template-fivem (main)
✅ Proteção de branch configurada: main
✅ Labels padrão aplicadas
✅ Secrets da organização injetados
🎉 Repositório pronto para uso!
- 🐙 GitHub: https://github.com/mri-Qbox-Brasil/repo-bootstrap
- 📦 Docker Image:
ghcr.io/mri-qbox-brasil/repo-bootstrap - 📚 GitHub CLI: https://cli.github.com/
- 💬 Discord: https://discord.gg/uEfGD4mmVh
MIT License
Automação com excelência pela MRI Qbox Team Brasil 🇧🇷