Dia 15: De ‘Works on My Machine’ a CI/CD à prova de balas – a revolução do GitHub Ações
O plano: continue o desenvolvimento avançado de recursos da IA A realidade: “Às vezes, o trabalho mais importante é a criação de infraestrutura à prova de balas”, bem-vindo ao Dia 15 da construção de uma plataforma de observabilidade nativa da IA em 30 dias! Hoje, entreguei o que estou chamando de revolução de infraestrutura de CI/CD – uma transformação sistemática de “Works on My Machine” para automação pronta para produção que expuseram questões críticas e levaram a grandes melhorias arquitetônicas. A implementação das ações do GitHub: estratégia de IC/CD de duas camadas, em vez de continuar com o desenvolvimento de recursos, o dia 15 focou no estabelecimento da infraestrutura de IC/CD à prova de balas. Esta provou ser a decisão certa, pois imediatamente expôs questões que causariam problemas posteriormente. Fluxo de trabalho primário: Claude-Code-Integration.yml O principal fluxo de trabalho fornece automação abrangente com vários gatilhos: Nome: Claude Code Integration Pipeline On: Pull_Request: Types: [opened, synchronize, reopened]
edição_comment: tipos: [created]
Push: ramificações: [main, test/*, feat/*]
Workflow_dispatch: Digite Recursos da tecla Modo de tela cheia de tela cheia: Automação multi-gigante: PR Comentários, PRs, empurrões, Despacho manual Integração de código de Claude: Revisões automatizadas de PR com a IA Real Services SERVIÇOS DE TESTEMENTO DO TEMPENCIMENTO: ESLINT, ESLINT, PRETTIER, TESTENÇÃO DE INTEGRAÇÃO, E2E DOCKER SERVIÇOS Fluxo de trabalho de proteção: Never-Break-main.yml O fluxo de trabalho secundário fornece Proteção de ramificação principal de grau de produção: Nome: Never Break Main-Validação abrangente em: Pull_Request: Branches: [main]
Push: ramificações: [main]
Digite Validação pronta para produção de tela cheia de tela cheia: teste abrangente de 30 minutos com validação de migração de bancos de dados de serviços reais com a verificação de construção de Docker Docker de clickhouse Opentelemetria: o SetIning SetInting Setent SetInting SetIning SetIning SetInting SetIning SetIning SetInting SetIning SetIning SetIning Setent O que se tornou o relatório do MOMPERET RELATERENTE APRENDIMENTO O RELATÓRIO DO MOMPETO. estava criando diretórios .pnpm-lojas no sistema host durante as compilações do Docker. # O volume problemático de volume de montagem: – ./ui:/app -/app/node_modules Digite o modo de tela cheia de tela cheia Modo de tela cheia Raiz Causa: O diretório de lojas padrão do PNPM estava sendo criado no volume montado, poluindo o repositório do host. Solução Implementada: # Configure o PNPM para usar o diretório de armazenamento isolado Run PNPM Config Definir Store-Dir /TMP /PNPM Store Digite Modo de tela Full Screen Modo de tela cheia 2. Problemas de arquitetura de teste de integração Problemas descobertos: testes passados localmente, mas falharam no IC devido a problemas de conectividade de serviço. Problemas Encontrados: Problemas de tempo de orquestração de contêineres entre conflitos de porta entre serviços de banco de dados de banco de dados String Soluções de inconsistências Aplicadas: atrasos estratégicos de startups de serviços com verificações de saúde padrões de ambiente padronizados Padrões variáveis Comandos de validação de infraestrutura abrangentes 3. Construir Inconsistências em questão descoberta: diferentes comportamentos de construção entre ambientes locais e de IC. # Local (Works) PNPM Instale # CI (Falha inicialmente) PNPM Instale-Frozen-LockFile Digite Modo de tela cheia Modo de tela cheia ROOT Causa: Inconsistências do arquivo de bloqueio e problemas de compilação do GYP no ambiente de IC. Solução: Uso estratégico de-Sinalizadores–NO-Frozen-Lockfile com base no contexto. The Storage Architecture Consolidation While fixing CI issues, we discovered architectural complexity that needed addressing: Eliminating Duplicate Storage Layers Before: Multiple storage implementations with inconsistent patterns // Multiple storage classes with different approaches class SimpleStorage { /* custom implementation */ } class StorageAPIClient { /* Effect-TS patterns */ } Enter fullscreen mode Exit fullscreen mode After: Unified Effect-TS architecture throughout // fonte única de verdade com padrões consistentes interface de exportação storageapiclient {readonly writeotlp: (dados: otlpdata, codingType?: ‘Protobuf’ | ‘json’) => efeito.eeffect.eeffect.
Readonly Queryraw: (SQL: String) => Effect.Effect
Readonly HealthCheck: () => Effect.Effect<{ clickhouse: boolean; s3: boolean }, StorageError>
} Digite a revolução do tipo de segurança do modo de tela de tela cheia da tela Full.[] = Result.Items // After: Interface de segurança do tipo abrangente TraceQueryResult {trace_id: string service_name: string coding_type: string} const resultado = Response.data como traceQueryResult[]
Digite um aprimoramento abrangente da cobertura do teste de tela cheia do modo de tela cheia. Melhorias de concreto entregues: Excelência em suíte de teste ✅ Testes de unidade: 140/140 Passagem (taxa de sucesso de 100%) ✅ Testes de integração: armazenamento abrangente e codificação Validação ✅ E2E Testes: 39/39 Passagem (Taxa de sucesso de 100%) ✅ Tipo de segurança: todas as violações de ESLINT Resolvadas, zero `qualquer tipo de serena. Ambientes Repositórios limpos: sem artefatos de construção ou orquestração de serviços de poluição: Testes de múltiplos containers confiáveis portões de qualidade automatizados: Código quebrado bloqueado do desenvolvedor principal da filial Melhorias de experiência Feedback: Teste de nível de PR Combate: REVISTA DO CORMATIVO: Integratização de Clear Error e Falha em Cobertura de Linha de Linha A- Linear Dive: Correções críticas aplicadas 1. Docker Configuration Optimization # UI DockerFile Melhorias do nó: 18-alpina como desenvolvimento Execute o pnpm Config Definir Store-Dir /TMP /PNPM # Prevê que o serviço de HealthECHEET: Docker-Crection Worker-Crection. [‘CMD’, ‘clickhouse-client’, ‘–user’, ‘otel’, ‘–password’, ‘otel123’, ‘–query’, ‘SELECT 1’]
interval: 10s timeout: 5s retries: 10 start_period: 30s Enter fullscreen mode Exit fullscreen mode 3. Test Infrastructure Commands // package.json – standardized test commands { “scripts”: { “dev:validate”: “node test/validate-infrastructure.js”, “test:integration”: “vitest –config vitest.integration.config.ts”, “Teste: E2E”: “Teste de dramaturgo -Reporter = Line”}} Digite o modo de tela cheia de saída de tela cheia implicações estratégicas: por que a infraestrutura primeiro importa esse desvio do desenvolvimento de recursos para a infraestrutura provou ser essencial: 1. A edição oculta da descoberta de IC/CD exposta imediatamente que causariam falhas de preensão posterior. 2. Estabelecimento do portão de qualidade Nenhum código quebrado pode atingir o ramo principal – estabelece a velocidade de desenvolvimento sustentável. 3. A prontidão para colaboração da equipe CI/CD permite que os futuros membros da equipe contribuam com confiança. 4. Os padrões de infraestrutura da Fundação de Implantação de Produção estabelecidos hoje escalam diretamente para a implantação corporativa. Looking Ahead: The Halfway Point Tomorrow Day 15’s infrastructure work positions us perfectly for Day 16 – the halfway milestone: ✅ Bulletproof CI/CD: Automated testing and quality gates operational✅ Clean Architecture: Unified storage patterns with Effect-TS throughout✅ Type Safety: Zero any types, comprehensive error handling✅ Production Readiness: Infrastructure patterns ready for enterprise scale✅ Developer Experience: Fast feedback loops and automated workflows The remaining 15 Os dias podem se concentrar nos recursos avançados da IA com confiança de que nossa fundação é sólida. Key Takeaways for AI-Native Development CI/CD reveals truth: “Works on my machine” problems become apparent immediately with proper automation Infrastructure first: Invest in bulletproof foundations before advanced features Systematic fixes: Root cause analysis prevents cascading issues later Type safety pays: Comprehensive typing eliminates entire categories of bugs Effect-TS scales: Functional patterns provide structure that grows with complexity Day 15 proves that sometimes the most important development work isn’t writing Novos recursos – está construindo a infraestrutura que torna todo o resto possível. Este post faz parte do meu desafio de 30 dias para construir uma plataforma de observabilidade nativa da IA. Acompanhe enquanto exploramos como o desenvolvimento sistemático de infraestrutura cria a base para recursos avançados de IA. Anteriormente: Dia 14: AI Modelo DiferenciaçãoNext: Dia 16: The Halfway Milestone – Recursos avançados BEGINSOURCE Código: Repositório do GitHub
Fonte