Tempo de Leitura
3
min
GitLab CI: tags de runner e roteamento de jobs (sem dor)
Cache é uma das maiores alavancas de performance em CI/CD. Também é uma das maiores fontes de bugs intermitentes.
O objetivo deste post é prático: ensinar a desenhar cache keys que aceleram o pipeline sem deixar você com builds “assombrados”.
Este post faz parte da série:
Regra de bolso:
Quando você usa cache para transportar output de build, você aumenta o risco de:
Um cache key bom costuma ter:
Um cache key ruim costuma ter:
- name: Cache npm
uses: actions/cache@v4
with:
path: ~/.npm
key: ${{ runner.os }}-${{ runner.arch }}-npm-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-${{ runner.arch }}-npm-Por que isso funciona:
restore-keys permite reaproveitar cache “próximo” quando o exato não existe.runner.arch evita misturar ARM64 e x64.cache:
key: "node-${CI_RUNNER_EXECUTABLE_ARCH}-${CI_COMMIT_REF_SLUG}-${CI_PROJECT_NAME}"
paths:
- .npm/
fallback_keys:
- "node-${CI_RUNNER_EXECUTABLE_ARCH}-main-${CI_PROJECT_NAME}"
- "node-${CI_RUNNER_EXECUTABLE_ARCH}-default-${CI_PROJECT_NAME}"Por que isso funciona:
Regra geral: cacheie o “cache do gerenciador”, não necessariamente a pasta final.
~/.npm~/.pnpm-store~/.cache/pip~/.gradle/cachesvendor/bundle (com critério)O que evitar como primeiro passo:
node_modules indiscriminadamente (pode ser enorme e instável)Três causas clássicas de cache “sempre miss”:
Checklist para corrigir:
hashFiles(...) ou equivalente).Quando você tem ARM64 e x64:
Regra prática:
arch no key