В CI/CD часто есть две похожие сущности. Cache ускоряет следующие запуски, а artifacts сохраняют результат текущего job.
Из-за похожей логики их иногда используют как одно и то же. Например, кладут build-результат в cache или зависимости в artifacts.
Cache нужен для временных данных, которые можно восстановить заново:
cache:
paths:
- .npm/
Если cache пропадёт, pipeline должен просто стать медленнее, но не сломаться по смыслу.
Artifacts нужны для результата, который должен перейти в следующий job или остаться после сборки:
artifacts:
paths:
- dist/
Например, build-job собирает dist, а deploy-job забирает именно этот dist. Тут cache не подходит, потому что cache может быть старым или очищенным.
Плохой сигнал, если deploy зависит от cache:
deploy:
script:
- upload dist/
Если dist приехал из cache, можно случайно выкатить не тот build.
Надёжнее разделять роли. Зависимости, package cache и compiler cache идут в cache. Собранные бинарники, отчёты, coverage и dist идут в artifacts.
Cache ускоряет работу, artifacts передают конкретный результат между шагами.
➡️ DevOps Ready | #совет
