O Que É um Stale Runner? A Máquina Deriva que Deixa Builds Instáveis
Um stale runner é um que derivou do seu estado pretendido - uma versão de agente desatualizada, uma imagem sem patch, ou estado residual acumulado - e agora causa falhas.
Stale runners são uma das principais causas de "funciona na maioria dos runners menos naquele". Runners persistentes derivam com o tempo; quanto mais vivem, mais longe ficam de uma baseline limpa e mais misteriosas ficam suas falhas.
Como runners ficam stale
- Drift de agente: a versão do runner fica para trás e é rejeitada ou depreciada.
- Drift de imagem: o SO e as ferramentas envelhecem com patches de segurança faltando.
- Drift de estado: arquivos, caches e processos residuais se acumulam entre jobs.
- Drift de registration: runners fantasma persistem offline após a máquina sumir.
Por que a staleness causa instabilidade
Um runner derivado se comporta diferente de um novo: um build que passa em máquinas limpas falha no stale por causa de estado residual ou de uma ferramenta antiga. Esses são enlouquecedores de debugar porque o código está bem - a máquina não está.
Prevenindo a staleness
Runners efêmeros não podem ficar stale: cada um é novo e destruído após um job. Para runners persistentes, você precisa de atualizações automáticas de agente, rebuilds regulares de imagem e limpeza por job - o que é trabalho de ops contínuo.
Staleness em runners gerenciados
Os runners da Latchkey são efêmeros e reconstruídos a partir de uma imagem mantida, então a staleness simplesmente não ocorre - todo job recebe uma máquina atual e limpa.
Identificando um stale runner
Sinais reveladores são um job que falha só em um runner específico, avisos de depreciação sobre a versão do runner, ou erros de disco cheio e de processos residuais que somem após um reboot. Quando o sintoma se move com a máquina em vez do código, suspeite de staleness.
Principais conclusões
- Um stale runner derivou em agente, imagem ou estado e agora falha.
- É uma causa principal de instabilidade "que falha só naquele runner".
- Runners efêmeros não podem ficar stale; os persistentes precisam de manutenção ativa.
- Runners efêmeros gerenciados evitam a staleness por completo.