Cache e artefatos
Dois mecanismos distintos, frequentemente confundidos, com efeitos muito diferentes.
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