A melhor solução é fazer uso exclusivo do seu sistema de IC para todas as compilações organizacionalmente significativas (liberações, liberar candidatos etc ...).
Isso sistematicamente vincula os binários liberados ao conteúdo do repositório sem precisar realmente armazenar os binários no repositório.
Por exemplo, se você estiver usando SVN, use o esquema organizacional principal da filial; faça todo o desenvolvimento diário em / trunk e crie uma tag / para cada release assim que estiver pronto.
Configure seu sistema de IC para criar tags e também de tronco e faça com que ele grave a saída em um diretório de rede cuja estrutura reflete a estrutura de nível superior do repositório:
- / builds / trunk / [rev] [date] [build_id] /
- / builds / tags / release_0_1_3beta4 / [rev] [date] [build_id] /
O sistema de compilação precisará tratar o diretório / builds / trunk / como um buffer circular, armazenando as últimas n compilações, excluindo as compilações antigas à medida que for avançando.
O diretório / builds / tags / , por outro lado, é um armazenamento permanente. Os artefatos de construção são armazenados em diretórios com nomes gerados de acordo com o seguinte esquema:
onde [rev] é o ID da revisão do SVN, [date] é a data no formato AAAAMMDD e [build_id] é um contador exclusivo de três dígitos, incrementando a partir da primeira compilação, tornando cada diretório de compilação exclusivo.
O processo detalhado acima oferece os seguintes benefícios:
Os artefatos de construção estão vinculados sistematicamente à origem que os gerou, para que você possa encontrar a origem de um artefato de construção específico com muita facilidade (e vice-versa).
Isso forma a base para automação de liberação adicional. Por exemplo, geração automática de documentos de lançamento, etc ...