Skip to content

mri-Qbox-Brasil/repo-bootstrap

Repository files navigation

Ferramenta de Criação de Repositórios

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.

Docker GitHub MRI Qbox License


📋 Table of Contents


🎯 O que é?

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

O que isso resolve

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)

Como funciona

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]
Loading

Passo a passo detalhado:

  1. Autentica no GitHub via CLI (gh)
  2. Resolve o template correto em templates.json
  3. Cria o novo repositório na organização
  4. Sincronização Garantida: Clona e força o conteúdo do template para o novo repo
  5. Executa scripts de setup para aplicar proteções (opcional), labels e secrets

Uso Rápido

Comando Básico

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:latest

Comando Completo (com todas as opções)

docker 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áveis de Ambiente

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=true

📦 Templates Disponíveis

O 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)

🔑 Permissões do Token

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)

Como criar o token:

  1. Acesse GitHub Settings → Personal access tokens
  2. Clique em Generate new token (classic)
  3. Selecione as permissões acima
  4. Copie o token (ghp_xxx...)

🏗️ Arquitetura

Estrutura de Arquivos

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

Fluxo de Execução

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

💻 Exemplos de Uso

Exemplo 1: Criar um script FiveM básico

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:latest

Exemplo 2: Criar um recurso com React UI

docker 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

Exemplo 3: Usando arquivo .env

# 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

🛡️ Segurança

Boas Práticas

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

O que NÃO fazer:

# ❌ ERRADO - Token exposto
docker run -e GITHUB_TOKEN=ghp_1234567890abcdef...

# ✅ CORRETO - Usar .env ou secret
docker run --env-file .env ...

📊 Resultado Esperado

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!

🔗 Links


📄 Licença

MIT License


Automação com excelência pela MRI Qbox Team Brasil 🇧🇷

About

Crie repositórios padronizados, seguros e prontos para produção com um único comando. Sem setup manual. Sem esquecer configuração. Sem inconsistência entre projetos.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors