O que é um artefato?

54

Existem algumas perguntas e respostas que mencionam " artefatos ".

Eu não ficaria surpreso se, de alguma forma, estivesse relacionado a .

Minhas perguntas :

  • O que é realmente um "artefato" (no contexto do DevOps)?
  • Por que os artefatos são usados?
Pierre.Vriens
fonte
Algumas respostas interessantes para o que eu gostaria de ser uma pergunta bastante básica. Curiosamente, todos eles me lembram um conceito semelhante em bons e velhos ambientes de mainframe (onde minhas raízes do DevOps são ... e de onde parecem surgir tantos conceitos do DevOps).
Pierre.Vriens

Respostas:

67

Artifactory é um produto da JFrog que serve como um gerenciador de repositório binário . Dito isso, muitas vezes, usaremos um 'artefato' como sinônimo do repositório binário mais geral, assim como muitas pessoas usam Frigidaire ou geladeira para designar a geladeira, independentemente de ser ou não uma marca Frigidaire.

O repositório binário é uma extensão natural do repositório de código-fonte, na medida em que armazena o resultado do seu processo de construção, geralmente indicado como artefatos. Na maioria das vezes, não se usa o repositório binário diretamente, mas através de um gerenciador de pacotes que vem com a tecnologia escolhida.

Na maioria dos casos, eles armazenam componentes de aplicativos individuais que podem ser montados posteriormente em um produto completo - permitindo que uma compilação seja dividida em partes menores, utilizando recursos mais eficientemente, reduzindo os tempos de compilação, melhor rastreamento dos bancos de dados de depuração binários etc.

Aqui estão alguns dos gerenciadores de pacotes mais populares que podem ser gerenciados usando um repositório binário:

  • Java: jar, ear, war etc tem o Maven e o MavenCentral oficial . Existem muitos outros gerenciadores de pacotes que também usarão o formato de repositório binário do maven ( ivy , gradle etc.).
  • .Net: nuget para componentes .NET (DLL e EXE), mas também pode ser usado como mecanismo de distribuição em sistemas Windows como o Chocolatey . As versões mais recentes do Powershell também podem aproveitar isso para distribuir os módulos do PowerShell, embora a galeria do PowerShell possa construir uma distribuição local com um repositório binário e um repositório no formato nuget. Verifique também o OneGet se o gerenciamento de distribuição do Windows é do seu interesse.
  • Em JavaScript: temos o npm, que é um dos mais populares, exigirá o nodejs .
  • Em python: existe pip e o pacote oficial index pypi , que também pode ser criado uma instância local através do repositório binário que suportará o formato.

Esta lista está longe de ser completa, apenas fornece uma idéia do que está lá fora.

O repositório binário pode permitir hospedar tudo isso sob o mesmo teto, tornando seu gerenciamento muito mais simples para as equipes. Observe que você não precisa de uma equipe muito grande para começar a colher os benefícios do gerenciamento de pacotes binários. O investimento inicial não é muito grande e os benefícios são sentidos imediatamente. Especialmente agora que mais e mais plataformas, estruturas e linguagens estão integrando esse gerenciamento de dependência diretamente a elas. A maior vantagem que encontrei, no entanto, foi criar um ambiente que seus programadores acharão natural e confortável, tornando-o essencial. Ele ajuda você, como desenvolvedor, a criar uma sólida cadeia de ferramentas e ajuda a fazer com que a experiência geral se encaixe naturalmente em sua pilha de opções.

Como eu disse anteriormente, existem muitos produtos por aí que podem servir como gerenciadores de pacotes binários, alguns mais genéricos que outros em seu uso-alvo, variando também amplamente em termos de acessibilidade e preços.

Minha opinião pessoal é que os repositórios binários são parte tão vital de uma configuração de devops bem projetada quanto o repositório de código-fonte ou a integração contínua.

Newtopian
fonte
Merci por esta resposta interessante (também). Por alguma razão, tudo isso me faz pensar como "hm, então é como costumamos chamar, em bons ambientes antigos de mainframe, coisas como bibliotecas de carregamento contendo executáveis (usados ​​para executar suas regiões CICS / IMS / IDMS) ..." .
Pierre.Vriens
11
Uma coisa importante a acrescentar é a ascensão de repositórios públicos, como Maven Central etc modulecounts.com - estes são muitas vezes a fonte de alimentação para projetos de software que se tornam mais e mais montagem srores para estes componentes mais personalizado cola código / frontend e de negócios específico do cliente curso lógica.
Peter
11
nunca ouvi falar de modulecounts.com, o site está fora do ar agora, vou ver mais tarde.
Newtopian 31/08/19
11
Analogia interessante de geladeira para geladeira :)
Ravi Tiwari
8

Do jeito que me ajudou a entender inicialmente, a diferença entre o repositório de código-fonte e o repositório binário era pensar assim: * Github ou Bitbucket é útil para manter todo o 'código' * O Jfrog Artifactory é útil para manter o 'binário' construído. até que eu estivesse confortável com esses termos!

Além disso, a importância do Artifactory pode ser entendida em relação à filosofia do DevOps para "Construir uma vez, implantar sempre". É um longo caminho na Integração Contínua criar seu binário uma vez, colocá-lo no Artifactory e depois chamá-lo para implantar em todos os diferentes ambientes. Dessa forma, temos certeza de que o código que funciona no Dev é aquele enviado ao Prod e funcionará lá.

Karthik Venkatesan
fonte
explicação interessante, merci!
Pierre.Vriens
6

Artifactory é um produto Binary Repository Manager da Jfrog .

Você está certo - sendo um gerenciador de repositório binário, ele normalmente é usado para gerenciar o armazenamento de gerados e usados ​​no processo de desenvolvimento de software.

Na página principal do Artifactory :

Como o primeiro e único Universal Artifact Repository Manager do mercado, o JFrog Artifactory suporta totalmente pacotes de software criados por qualquer idioma ou tecnologia.

...

... O Artifactory fornece uma solução automatizada e à prova de balas de ponta a ponta para rastrear artefatos do desenvolvimento à produção.

Os usos que você mencionou sugerem que pode ser popular o suficiente para uma marca comercial genérica no DevOps.

Dan Cornilescu
fonte
11
Merci Dan, você está de alguma forma confirmando que um Artifactory é como uma combinação das palavras Artifac st com Reposi tory . A pergunta adicional sobre a qual me pergunto é: e os artefatos usados ​​na produção, mas que não são binários, como código PHP, arquivos CSS, scripts bash, etc?
Pierre.Vriens
11
Para código de aplicação que têm código-fonte sistemas como o CVS, SVN, git, mercurial versionamento .. E para código de configuração, sistemas de gestão e de distribuição de configuração, como fantoche, cozinheiro chefe, ansible, sal ..
Peter
@ Pierre.Vriens Eu não costumava pensar dessa maneira, de alguma forma "fábrica" ​​sempre vinha à mente primeiro :) Mas agora eu vejo isso totalmente. Obrigado!
Dan Cornilescu
@ J.Doe merci por essa adição, e apenas para ampliar ainda mais seu comentário ... em mainframes, eles têm ferramentas como "ChangeMan ZMF", "Endevor SCM" etc. Essas ferramentas são usadas para todas as funções que você mencionou (controle de versão, distribuição etc., mas também para fluxo de trabalho, segurança etc. relacionados a tudo isso).
Pierre.Vriens
Portanto, se reinventarmos os msinframes, o que poderia estar errado com eles ?!
Peter
4

Eu acho que complicar as coisas é o que todo mundo está sendo apreciado hoje em dia. Vou tentar responder a esta pergunta em resumo.

O repositório de origem é usado para armazenar código e suas versões, enquanto o artefato é usado para armazenar os programas executáveis ​​que são saídas desse código [binários - arquivos dll, jar, war, ear, msi, exe etc.]

Agora, a razão pela qual você deseja colocá-los separadamente em um repositório diferente do seu código pode ser muitos - desde acesso seguro, ameaça de hackers, check-in de códigos maliciosos ou simplesmente ter uma avenida separada para os clientes que precisam apenas do binários.

A tecnologia do SCM poderia ter se divulgado para a criação de 2 tipos de usuários (um com privilégios de desenvolvedor que poderá acessar o código-fonte e outro como um cliente que poderá acessar os binários). Mas não seguiu esse caminho! Então agora temos artefatos.

Lança A1
fonte
2

Um artefato

É algo que é produzido / gerado / criado a partir de um processo específico

Faça o jar de uma compilação de projeto Java.

Pergunta fora de sua mente

Carro fora de uma fábrica

Nova música

Um repositório

É um receptáculo onde as coisas persistem

Github para um projeto Java.

StackExchange para suas perguntas assustadoras

Em teoria, um Artefato - ORY seria um repositório de artefato onde eles são persistentes e conseguiu durante o seu ciclo de vida.

No contexto do DevOps, o Artifactory é um produto que gerencia artefatos binários. Ele armazena e gerencia diferentes tipos (pacotes Jar, Python e npm, etc ...) que você produz a partir de suas compilações e reutiliza em tempo de compilação ou implantação.

gumol
fonte
explicação interessante, merci!
Pierre.Vriens
ca me fait plaisir!
Gumol 21/08/19