Sobes.tech
Middle

Qual abordagem você usa para armazenar artefatos de build e em quais sistemas é melhor fazer isso?

sobes.tech IA

Resposta da IA

Utilizamos uma abordagem de armazenamento centralizado de artefactos. Os sistemas especializados são os mais adequados para isso.

Principais sistemas para armazenamento de artefactos de build:

  • Nexus Repository Manager: Suporta múltiplos formatos de repositórios (Maven, npm, Docker, NuGet e outros), com funções extensas de gestão, segurança e integração.
  • Artifactory: Semelhante ao Nexus, mas frequentemente considerado mais funcional, especialmente para ambientes corporativos complexos. Também suporta múltiplos formatos.
  • GitHub Packages: Armazenamento de artefactos integrado no GitHub, integrado com os fluxos de trabalho do GitHub Actions. Conveniente para projetos que já usam GitHub.
  • GitLab Package Registry: Semelhante ao GitHub Packages, mas para GitLab. Integrado com GitLab CI/CD.
  • Armazenamentos nativos na cloud:
    • Amazon S3: Pode ser usado como armazenamento simples para artefactos estáticos, mas sem funções de gestão de dependências, como no Nexus ou Artifactory.
    • Google Cloud Storage: Semelhante ao Amazon S3.
    • Azure Blob Storage: Semelhante ao Amazon S3 e Google Cloud Storage.

A escolha de um sistema específico depende das necessidades do projeto, das tecnologias utilizadas, do nível de segurança e da escala da infraestrutura. Para a maioria dos projetos, Nexus ou Artifactory são a escolha padrão.

// Exemplo de configuração Maven para enviar artefactos ao Nexus
<distributionManagement>
  <repository>
    <id>nexus</id>
    <name>Repositório de Releases Nexus</name>
    <url>http://seu-url-nexus/repository/maven-releases/</url>
  </repository>
  <snapshotRepository>
    <id>nexus</id>
    <name>Repositório de Snapshots Nexus</name>
    <url>http://seu-url-nexus/repository/maven-snapshots/</url>
  </snapshotRepository>
</distributionManagement>
// Exemplo de comando Docker para carregar uma imagem do Artifactory
docker pull seu-url-artifactory/sua-imagem:latest

Vantagens principais do armazenamento centralizado:

  • Versionamento e gestão: Facilita o acompanhamento das versões dos artefatos.
  • Inalterabilidade: Os artefatos publicados não devem ser alterados.
  • Facilidade de implantação: Facilita obter as versões necessárias dos artefatos para implantação.
  • Cache de dependências: Acelera a compilação através do cache local de dependências externas.
  • Segurança: Controle de acesso aos artefatos.