Артефакт сборки не доехал до стадии деплоя
Пайплайн настроен так:
build:
stage: build
script:
- mvn -B package
cache:
key: "$CI_COMMIT_REF_SLUG"
paths:
- target/
deploy:
stage: deploy
script:
- scp target/app.jar deploy@app-01:/opt/app/
Сборка проходит зелёной, а деплой падает: target/app.jar: No such file or directory. Иногда, если оба джоба попадают на один и тот же раннер, деплой неожиданно срабатывает.
В чём причина плавающего поведения?
- Кэш не сработал из-за ключа по имени ветки: значение `$CI_COMMIT_REF_SLUG` меняется от ветки к ветке, а с фиксированным ключом файлы передавались бы между джобами стабильно
- Джоб деплоя стартует раньше, чем сборка успевает выгрузить кэш, — нужно добавить ожидание перед копированием
- Каталог `target/` нужно добавить в `.gitignore`, иначе кэш игнорирует его содержимое
- Кэш — необязательная оптимизация повторных сборок и не гарантирует передачу файлов между джобами; результат сборки нужно объявлять артефактом
