Вступить в клуб →
средняявопросCI/CD и инфраструктура как код

Артефакт сборки не доехал до стадии деплоя

Пайплайн настроен так:

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`, иначе кэш игнорирует его содержимое
  • Кэш — необязательная оптимизация повторных сборок и не гарантирует передачу файлов между джобами; результат сборки нужно объявлять артефактом

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела