O que é um repositório de artefato? Se for apenas um lugar para armazenar arquivos, não posso apenas usar um sistema de controle de origem?
Resposta
Durante desenvolvimento, você gera uma boa quantidade de artefatos diferentes. Isso pode incluir:
- O código-fonte
- O aplicativo compilado
- Um pacote implantável
- Documentação
e potencialmente outros também
Embora você possa usar um sistema de controle de origem para armazenar todos eles, geralmente é extremamente ineficiente, já que os sistemas de controle de origem geralmente são projetados para lidar com base em texto arquivos, e não arquivos binários. Você pode usá-los como um mecanismo de armazenamento simples, se a maioria de seus lançamentos forem baseados em texto e você não precisar armazenar muitos dados binários.
Repositórios de artefatos, entretanto, são projetados para armazenar todos os tipos de arquivos, incluindo binários. Isso inclui qualquer coisa, desde códigos-fonte compactados, para criar resultados, até coisas como imagens do docker também. Além disso, eles geralmente não apenas armazenam esses artefatos, mas também ajudam a gerenciá-los usando várias funções adicionais, por exemplo:
- Suporte para controle de versão: armazene corretamente alguns metadados, como quando cada artefato foi construído, qual sua versão número é, armazene seus hashes, etc.
- Retenção: certifique-se de manter apenas os artefatos importantes e exclua automaticamente aqueles que são apenas instantâneos / não são mais necessários, etc. com base em vários critérios que você pode configurar
- Controle de acesso: defina quem pode publicar e fazer download dos vários artefatos
- Promoção: capacidade de promover artefatos. Por exemplo, você pode ter artefatos de instantâneo com um curto período de retenção em um servidor próximo aos seus codificadores e um repositório separado próximo aos servidores ativos, onde apenas os artefatos que foram considerados implementáveis aparecem. Isso também inclui suporte para vários canais de versão e movimentação de artefatos entre eles (como promover uma versão específica de beta para estável).
- Atue como um repositório nativo para os artefatos. Significa que você pode usá-lo como o repositório principal para maven, rubygems, docker, etc. Isso também pode incluir o armazenamento em cache de artefatos dos repositórios oficiais.
Comentários
- Pode valer a pena adicionar o recurso ' canal ' ao suporte de controle de versão, podendo ter alguns máquina que visa o lançamento mais recente no canal ", desenvolve " e produz máquina que visa uma versão específica no canal " stable ".
- @ Pierre.Vriens adicionou alguns pequenos comentários, mas talvez também possa ser abordado em uma questão separada
- merci, mas apenas no caso, aqui é sua chance de abordar ainda mais meu comentário adicional …
- Faz sentido também mantém o controle dos arquivos de configuração ou fixtures nesses tipos de repositórios?
Resposta
Existem gerenciadores de repositório e gerenciadores de repositório de pacotes universais (UPM).
O UPM pode armazenar todo o seu artefato de construção para Jenkins, cidade de equipe etc. e geralmente também pode atuar como gerenciadores de repositório para muitos tipos diferentes de artefatos binários Maven, npm, NuGet e mais.
Seriam ferramentas como Jfrog Artifactory , Inedo ProGet , e Sonatype Nexus .
Uma comparação bastante decente está aqui: https://binary-repositories-comparison.github.io/