- Use Google Distroless images for all services (Go & Node.js). - Standardize documentation with [PROJECT-NAME].md. - Add .dockerignore and .gitignore to all projects. - Remove docker-compose.yml in favor of docker run instructions. - Fix Go version and dependency issues in observability, repo-integrations, and security-governance. - Add Podman support (fully qualified image names). - Update Dashboard to use Node.js static server for Distroless compatibility.
2 KiB
2 KiB
REPO-INTEGRATIONS-CORE
O repo-integrations-core é o serviço responsável por gerenciar o ciclo de vida de integrações com provedores de controle de versão (Git).
📋 Visão Geral
Este serviço atua como um middleware inteligente entre a plataforma e provedores externos (GitHub, GitLab, Bitbucket), normalizando fluxos de autenticação (OAuth) e ingestão de eventos (Webhooks).
Arquitetura
graph LR
User[Usuário] -->|OAuth Flow| API[Repo Integrations]
API -->|Exchange Code| GitHub[GitHub API]
API -->|Store Token| DB[(Encrypted DB)]
GitHub -->|Webhook| API
API -->|Normalize| EventBus[Event Bus / Queue]
🚀 Estrutura do Projeto
O projeto é escrito em Go e estrutura-se da seguinte forma:
| Diretório | Descrição |
|---|---|
cmd/api |
Entrypoint. |
internal/oauth |
Fluxos de autenticação. |
internal/webhooks |
Processamento e validação de webhooks. |
internal/provider |
Abstrações para diferentes providers (GitHub, GitLab). |
🛠️ Tecnologias e Otimizações
- Linguagem: Go 1.23.
- Database: PostgreSQL (tokens criptografados).
- Segurança: Criptografia AES-GCM para tokens de acesso.
- Containerização:
- Base
gcr.io/distroless/static:nonroot. - Build estático.
- Base
💻 Como Executar
Docker (Recomendado)
# Build
docker build -t repo-integrations-core .
# Run
docker run -p 8080:8080 --env-file .env repo-integrations-core
Disponível na porta 8080.
Desenvolvimento
- Setup:
cp .env.example .env go mod tidy - App GitHub: Você precisará criar um GitHub App e configurar
GITHUB_CLIENT_IDeGITHUB_SECRET. - Executar:
go run ./cmd/api
🔧 Detalhes do Dockerfile
O Dockerfile segue o padrão de otimização da plataforma:
- Builder:
golang:1.23-alpine. - Runtime:
distroless/static(sem shell, non-root). - Compilação: Flags
-w -spara redução de binário.