Recentemente, quando Patrick Galbraith Quando eu e o Moxi preparamos a próxima versão do moxi, passamos algum tempo fazendo a compilação em várias plataformas e com vários compiladores. A criação e o teste contínuos em várias plataformas ajudam a garantir a utilidade, a qualidade e a longevidade do código.
Isso é algo que todos nós da NorthScale acreditamos ser bom para os projetos que lideramos e para os quais contribuímos. Dustin Sallings vem fazendo isso há muito tempo com o memcached, como você pode ver no wiki do memcached e no próprio build farm. Todos nós, da NorthScale, continuamos esse esforço com as contribuições da comunidade. Como você pode ver, é uma lista bastante abrangente. Fazemos isso em outros projetos também. Para o proxy memcached, moxi, temos outro farm de compilação. Para quem não está familiarizado com a integração contínua, o buildbot nos permite reduzir o tempo entre o novo código e os problemas encontrados em vários ambientes de compilação. Toda vez que um desenvolvedor fizer uma alteração*, todas essas plataformas tentarão criar e testar o memcached. Se houver um problema, poderemos identificá-lo imediatamente e corrigi-lo, de modo que os problemas de compilação em outras plataformas não se prolonguem. Há muitas vantagens: isso mantém o código "pronto para lançamento", algumas plataformas podem detectar erros no momento da compilação que outras plataformas não detectam, etc. Para dar um exemplo de como isso funcionou para nós na prática, se alguém se depara com uma plataforma com um problema, é claro que resolvemos o problema em si (geralmente pedindo para erros de arquivo e fornecer um caso de teste), mas também pedimos ajuda para adicionar ao farm de compilação. Os Projeto GentooO Gentoo, por exemplo, inclui o memcached e abrange muitas e muitas plataformas. Recentemente, surgiu um problema com o Gentoo para a arquitetura ARM. Durante o processo, Dustin perguntou ao colaborador, Robin JohnsonSe eles pudessem configurar um construtor, então agora temos um construtor para o Gentoo em ARM. Para Patrick e eu, nessa última versão do moxi, isso significou adicionar alguns novos construtores ao build farm do moxi, aumentar os avisos do compilador e corrigir uma série de pequenos bugs. Embora muitos desses erros sejam mais do tipo de avisos dos quais apenas os compiladores em um modo pedante reclamariam, alguns outros apontavam para a segurança de tipo, que é o tipo de lugar em que os erros de software gostam de se esconder. Um pouco de calafetagem e vedação manterá os bugs afastados. No final das contas, o objetivo da NorthScale aqui é manter a alta qualidade dos resultados para memcached, moxi, libmemcached e outros projetos que lideramos ou para os quais contribuímos. Como disse Dustin postagem de blog sobre boletim escolar mostra que já progredimos em relação aos nossos objetivos; a vigilância constante do buildbot em nossa árvore deve ajudar a nos manter lá. * Tecnicamente, o processo que tentamos usar é usar um "buildbot try" (também contribuído por Dustin) primeiro ao fazer alterações, de modo que mantemos uma árvore que pode ser construída em todas as plataformas o tempo todo. Isso permite que um desenvolvedor que ainda não tenha feito o commit de uma alteração possa testá-la. Ele simplesmente trabalha com o git para gerar um diff e, em seguida, corrige a árvore em relação a um histórico comum.