O Que É um Runner Cache? Reutilizando Trabalho Entre Execuções Limpas
Um runner cache armazena artifacts caros - dependências, outputs de build, camadas de Docker - fora do runner para que uma máquina nova e efêmera possa restaurá-los em vez de reconstruir do zero.
Runners efêmeros são limpos mas não têm nada em cache, então cada job reinstalaria dependências e reconstruiria do zero. Um runner cache resolve isso: mantenha as partes caras em armazenamento externo e restaure-as em cada runner novo.
Por que o cache é necessário
Um runner limpo paga um imposto completo de instalação de dependências e build a cada job. Para um projeto grande isso pode ofuscar o tempo de teste real. O cache restaura as partes pesadas e de mudança lenta para que o job gaste seu tempo em trabalho real.
O que é colocado em cache
- Downloads de package manager (npm, pip, Maven, Cargo).
- Outputs de build compilados e estado de build incremental.
- Camadas de imagem Docker para evitar reconstruir estágios inalterados.
Cache sem estado sujo
A distinção-chave: um runner cache restaura artifacts conhecidos em uma máquina limpa, o que é seguro. Reutilizar um runner sujo inteiro é inseguro. O cache te dá velocidade mantendo a correção de runners efêmeros.
Cache em runners gerenciados
Plataformas gerenciadas entregam cache rápido e integrado para que runners efêmeros restaurem dependências e camadas rapidamente. A Latchkey combina warm pools com cache embutido para que runners novos também sejam runners rápidos.
Chaves de cache e invalidação
Um cache é chaveado em algo que captura suas entradas - tipicamente um hash do lockfile ou do Dockerfile. Quando as entradas mudam a chave muda e o cache é reconstruído; quando não mudam, ele é restaurado. Uma chave mal escolhida ou erra o tempo todo ou serve artifacts stale, então a chave é tão importante quanto o cache em si.
Principais conclusões
- Um runner cache armazena deps e outputs de build fora do runner.
- Ele permite que máquinas efêmeras pulem reconstruir do zero.
- Ele restaura artifacts conhecidos em runners limpos, mantendo a correção.
- O cache gerenciado torna runners novos rápidos sem reutilizar estado sujo.