O que é um repositório de artefato?

Respostas:

32

Durante o desenvolvimento, você gera uma quantidade razoável de artefatos diferentes. Isso pode incluir:

  • O código fonte
  • O aplicativo compilado
  • Um pacote implementá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, pois os sistemas de controle de origem geralmente são projetados para lidar com arquivos baseados em texto e não com arquivos binários. Você poderá usá-los como um mecanismo de armazenamento simples, se a maioria de seus lançamentos for baseada em texto e não precisar armazenar muitos dados binários.

Os repositórios de artefatos, no entanto, são projetados para armazenar todos os tipos de arquivos, incluindo binários. Isso inclui qualquer coisa, desde códigos-fonte compactados, para gerar resultados, até coisas como imagens do docker. 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 à versão: armazene corretamente alguns metadados, como quando cada artefato foi construído, qual é o número de sua versão, 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. etc. com base em vários critérios que você pode configurar
  • Controle de acesso: configure quem pode publicar e quem pode fazer o download dos vários artefatos
  • Promoção: capacidade de promover artefatos. Por exemplo, você pode ter artefatos de captura instantânea com um curto período de retenção em um servidor próximo aos codificadores e um repositório separado perto dos servidores ativos, onde apenas os artefatos 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).
  • Agir como um repositório nativo para os artefatos. Isso significa que você pode usá-lo como o repositório principal de maven, rubygems, docker etc. Isso também pode incluir o cache de artefatos dos repositórios oficiais.
SztupY
fonte
Pode valer a pena adicionar o recurso 'canal' sobre o suporte ao Versionning, tendo a capacidade de ter alguma máquina direcionada para a versão mais recente no canal "desenvolver" e produzir uma máquina direcionada para uma versão específica no canal "estável".
Tensibai
@ Pierre.Vriens adicionados alguns pequenos comentários, mas talvez ele possa ser abordada de uma questão separada bem
SztupY
merci, mas apenas no caso, aqui é sua chance de mais endereços meu comentário adicional ...
Pierre.Vriens
Faz sentido também acompanhar arquivos de configuração ou acessórios nesse tipo de repositório?
Tutuca #
7

Há gerenciadores de repositório e gerenciadores de repositório de pacotes universais (UPM).

Os UPMs podem armazenar todo o seu artefato de construção para Jenkins, teamcity etc. e geralmente também podem atuar como gerenciadores de repositório para muitos tipos diferentes de artefatos binários Maven, npm, NuGet e muito mais.

Seriam ferramentas como Jfrog Artifactory , Inedo ProGet e Sonatype Nexus .

Uma comparação bastante decente está aqui: https://binary-repositories-comparison.github.io/

Karl Harnagy
fonte