Gitlab CI: не удается найти вывод этапа сборки

У меня мой файл .gitlab-ci.yml настроен в три типичных этапа: тест, сборка, развертывание. На этапе сборки я запускаю команду, которая компилирует мой проект и помещает его в архив. Этап сборки выполняется успешно, потому что он переходит к этапу развертывания, но затем этап развертывания сообщает, что не может найти архив. Это в другом каталоге? Что с ним случилось? Спасибо.


person sajattack    schedule 29.10.2015    source источник
comment
Связанный about.gitlab.com/ 2016/03/10 / Вы можете создать artifacts: paths: . Что позволяет позже для загрузки.   -  person Unapiedra    schedule 20.04.2016
comment
Да, я почти уверен, что это было добавлено после того, как я разместил это.   -  person sajattack    schedule 30.04.2016


Ответы (2)


Для каждого теста gitlab-ci очищает папку сборки, поэтому выходные файлы этапа сборки недоступны на этапе развертывания.

Вам также необходимо перестроить свой проект на этапе развертывания.

«Этапы» полезны только для упорядочивания ваших тестов, т. Е. Избегают попытки выполнить тест развертывания, если тест сборки завершился неудачно.

РЕДАКТИРОВАТЬ: Начиная с Gitlab 8.6, можно использовать функцию зависимостей

person jeremf    schedule 29.10.2015
comment
Странный. Было бы лучше поместить компиляцию в отдельную работу? Как это сделать СУХОЙ способ? - person sajattack; 29.10.2015
comment
Да, было бы лучше, но в настоящее время нельзя повторно использовать результаты других этапов / тестов. - person jeremf; 02.11.2015

Я был удивлен, увидев такое же поведение (на GitLab 8.4).

Я использую cmake для создания make-файлов, затем make для сборки, а затем make test для запуска теста. Я запускаю все это в каталоге build/.

Я не хочу повторяться и легко определять, какие шаги терпят неудачу. Таким образом, я создал разные стадии gitlab-ci: cmake, make, test и т. Д. Затем я говорю gitlab-ci сохранить каталог build, используя параметр cache:

cache:
    key: "$CI_BUILD_REF_NAME"
    untracked: true
    paths:
        - build/

Я думаю, что опция key сохранит один и тот же каталог сборки для всех этапов, действующих в одной ветке. См. Документ gitlab-ci здесь: http://doc.gitlab.com/ce/ci/yaml/README.html#cache

РЕДАКТИРОВАТЬ: не используйте для этого cache! GitLab реализовал повторно используемые артефакты между этапами в 8.4: https://gitlab.com/gitlab-org/gitlab-ce/issues/3423 Для поддержки этого исполнители CI должны быть адаптированы. См .: https://gitlab.com/gitlab-org/gitlab-ci-multi-runner/issues/336

person big_gie    schedule 26.01.2016
comment
Я вернулся к сообщению № 3423, но вижу, что вы уже это сделали. +1. Похоже, что эту функцию откладывали несколько раз. - person sajattack; 23.03.2016