Короткий ответ Артефакт — это результат стадии сборки (бинарник, jar/zip-архив, Docker-образ, собранный frontend-бандл), который сохраняется и передаётся между стадиями и окружениями, чтобы не пересобирать код заново и гарантировать, что в прод попадёт именно то, что было протестировано. Как это работает подробнее стадия `build` компилирует и упаковывает код в файл или образ, который CI-система сохраняет во внутреннем хранилище артефактов или внешнем репозитории (registry, Nexus, Artifactory). Последующие стадии (`test`, `deploy`) скачивают этот же артефакт вместо повторной сборки. Пример кода Что использовать на практике На практике. принцип «собери один раз — разверни много раз» (build once, deploy many) важен для надёжности: если пересобирать код отдельно для каждого окружения, можно случайно получить разные версии зависимостей из-за недетерминированной сборки или изменений в реестре пакетов между запусками. Пример. Ожидаемое поведение: стадия `deploy` использует тот же образ `myapp:$CI_COMMIT_SHORT_SHA`,