A pergunta sobre " O que é um repositório de artefato? " Contém uma resposta com uma explicação interessante sobre a parte do repositório. E ao ler a resposta inteira, não tenho certeza do que exatamente um " artefato " significa no contexto do DevOps.
Alguma sugestão?
Ps: De uma das respostas, eu entendo que talvez artefato seja o que eu estou pensando (confuso?) Sobre ...
terminology
artifacts
Pierre.Vriens
fonte
fonte
Respostas:
A Wikipedia tem uma resposta muito boa para essa pergunta. O artefato , às vezes também chamado de Objeto Derivado , é um produto de algum processo aplicado ao Repositório de Código . Originalmente, eles eram chamados de Artefatos de Construção , mas, à medida que mais processos eram aplicados, além da construção, para criá-los, a primeira palavra era simplesmente descartada.
A principal distinção é que os artefatos podem ser recriados do repositório de código usando o mesmo processo, desde que você tenha preservado o ambiente no qual o processo foi aplicado. Como esse processo pode ser demorado e o ambiente pode ser preservado de maneira imperfeita para poder recriar os artefatos exatamente da mesma maneira, começamos a armazená-los nos Repositórios de Artefatos .
Armazená-los separadamente do Code Repository em um Repositório de Artefatos é uma decisão de design que um engenheiro do DevOps tomaria. Algumas empresas, nomeadamente o Perforce , sugerem o uso do Repositório de Código como Repositório de Artefato. Existem requisitos diferentes em termos de acesso , auditoria , tamanhos de objeto , marcação de objetos e escalabilidade em cada repositório e, portanto, dependendo da situação, geralmente é melhor usar dois produtos distintos. Por exemplo Gitos repositórios são copiados na íntegra para todas as máquinas de desenvolvimento e, portanto, o armazenamento de artefatos no repositório de códigos aumentaria seu tamanho além de qualquer motivo, embora ultimamente haja maneiras de mitigar isso. Outra decisão a tomar é quais artefatos armazenar. Algumas empresas armazenam até artefatos intermediários como arquivos de objetos individuais, para acelerar a recriação, outras armazenam apenas os binários finais. Nem todos os artefatos têm o mesmo valor. Os artefatos resultantes de uma construção de liberação podem ter requisitos diferentes dos artefatos resultantes de uma construção de desenvolvedor.
Os artefatos mais comuns são resultados dos seguintes processos: Configuração , Pré-processamento , Compilação , Vinculação , Teste Automatizado , Arquivamento , Empacotamento , criação e processamento de arquivos de mídia , Geração de Arquivo de Dados , Análise de Documentação , Análise de Código , Controle de Qualidade , etc.
fonte
Existem dois usos da palavra “artefato” e um torna o código-fonte um artefato enquanto o segundo faz com que não seja um artefato: isso pode realmente ser bastante confuso!
“Artefato” como uma coisa concreta versus uma coisa ideal - esse significado é o significado comum da palavra “um objeto feito por um ser humano, tipicamente de interesse cultural ou histórico” e não é um jargão técnico. Aqui está um exemplo no contexto técnico: Ao depurar um software, você aprende algo sobre o software. Muitas vezes, é um investimento valioso transformar esse aprendizado em um artefato de software, como um teste de regressão. Caso contrário, esse aprendizado será esquecido e o esforço feito para adquiri-lo será desperdiçado. Nesse sentido, o código fonte é considerado um artefato.
“Artefato” como algo produzido por uma receita - esse significado usa a imagem popular do alquimista usando alguma receita esotérica para produzir um dispositivo mágico, geralmente chamado de artefato. É um jargão técnico usado para distinguir entre o código fonte, que corresponde à receita na metáfora do alquimista, e qualquer coisa derivada desse código fonte, que corresponde a um artefato na metáfora do alquimista. Por exemplo, eu apenas automatizei a produção de artefatos para o meu programa plop-fizz, agora tarballs de origem, arquivos de assinatura, pacotes DEB e RPM podem ser instanciados em apenas um comando! Esse significado não reconhece o código fonte como um artefato, pois o termo é usado para indicar o que é produzido a partir desse código fonte.
fonte
Suponho que a resposta possa variar de um lugar para outro. Onde eu trabalho no momento, um artefato é qualquer coisa consumida por alguma outra entidade, exceto pelo código-fonte usado para o desenvolvimento - isso entra no controle de origem.
Isso inclui binários do produto ou outros produtos necessários, bibliotecas, arquivos de objetos, artefatos de teste como arquivos de mídia ou dados de teste.
O código-fonte não é considerado um artefato. A menos que corresponda à definição de "consumido por" - no nosso caso, incluindo bibliotecas de terceiros, código de script usado para teste ou outros fins (mas não a versão de desenvolvimento em si).
fonte
Nota lateral no lado da cultura. Enquanto no DevOps consideramos o conceito de "repositório de artefatos" como uma determinada situação, parece não haver muita ligação com o processo organizacional.
Problema de cultura: se uma organização usa o ITIL, as pessoas certificadas diriam "precisamos ter uma biblioteca de mídia definitiva, um repositório para colocar os itens de configuração de software que produzimos". Portanto, as pessoas que se preocupam com processos de TI bem estruturados não sabem quais ferramentas (não de gerenciamento) suportam isso e estão em uso. Vice-versa, se você precisar de uma justificativa para um idioma Nexus ou Artifactory, poderá ser difícil explicá-lo, dependendo da organização.
Leitura adicional: https://en.wikipedia.org/wiki/Definitive_Media_Library
fonte