Artifact management¶
Um repositório de artefato guarda o resultado de um build, um pacote pronto pra ser instalado ou consumido, versionado. É uma categoria mais ampla que container registry (ver Container registry): um artefato pode ser uma imagem de container, mas também um pacote npm, uma biblioteca Maven/Java, um pacote Python (PyPI), um pacote Debian/RPM, ou um arquivo genérico qualquer. Essa categoria só aparece nomeada explicitamente assim no roteiro de DevOps do roadmap.sh, nenhuma das listas curadas do GitHub usa esse termo específico, o que sugere que é uma categoria mais reconhecida no vocabulário do dia a dia de quem opera pipeline do que no vocabulário de curadoria de ferramenta open source.
flowchart TB
Artefato[repositório de artefato, categoria ampla] --> Container[imagem de container]
Artefato --> Npm[pacote npm]
Artefato --> Maven[biblioteca Maven/Java]
Artefato --> PyPI[pacote Python]
Artefato --> Deb[pacote Debian/RPM]
Container -.->|categoria mais específica| Registry[container registry]
Artifactory vs. Nexus¶
Os dois nomes mais citados resolvem o mesmo problema com filosofia de origem diferente: Nexus nasceu como companion do Maven (o gerenciador de dependência do ecossistema Java) e foi ganhando suporte a outros formatos depois, com foco em simplicidade; Artifactory nasceu já pensado pra suportar múltiplos formatos de pacote desde o início (Maven, npm, Docker, Debian, RubyGems, PyPI, e mais de uma dúzia de outros), com mais recurso enterprise (segurança avançada, escala maior), ao custo de mais complexidade pra operar.
Pra ir além¶
A antítese de um repositório de artefato dedicado é publicar direto num registry público genérico (npm público, Docker Hub público) sem controle de acesso nem retenção própria, ou pior, sem repositório nenhum, artefato só vive no ambiente onde foi gerado, e some se aquele ambiente for recriado. Times pequenos costumam usar registries públicos gratuitos até o volume ou a necessidade de controle de acesso justificar hospedar o próprio.
flowchart LR
A[sem repositório: artefato só no ambiente que gerou] --> B[registry público genérico, sem controle próprio]
B --> C[repositório de artefato dedicado, Artifactory/Nexus]
Onde aprofundar: o whitepaper comparativo da JFrog é obviamente parcial (é o fabricante do Artifactory comparando a própria ferramenta), mas cobre bem o espectro de formatos suportados por diferentes soluções, útil como mapa mesmo com o viés.