0%
Cache de dependências e artefatos entre jobs

Cache e artefatos

Dois mecanismos distintos, frequentemente confundidos, com efeitos muito diferentes.

10-15 min

Em um projeto JavaScript de porte médio, npm ci leva entre sessenta e cento e vinte segundos. Multiplique pelo número de jobs do seu workflow, pelo número de commits por dia, pelo número de pessoas na equipe: é a principal despesa de tempo de um pipeline de integração contínua, e ela não verifica nada. A cada execução, ela rebaixa pacotes que não mudam há três semanas.

O cache e os artefatos atendem a duas necessidades que são constantemente confundidas. O cache serve para não refazer um trabalho cujo resultado é reconstruível: dependências baixadas, objetos intermediários de compilação. Ele é descartável por natureza — se o cache desaparecer, o pipeline continua funcionando, só que mais devagar. O artefato serve para transportar um resultado que se quer guardar ou repassar: um executável compilado, um relatório de testes, uma captura de tela de um teste que falhou. Usar um artefato como cache gera execuções lentas e armazenamento saturado; usar um cache para transportar um binário gera falhas intermitentes, no dia em que o cache estiver ausente.

Comentários

Os comentários são alimentados pelo GitHub Discussions

Conecte-se com o GitHub para participar da discussão

Link copiado!