У меня мой файл .gitlab-ci.yml настроен в три типичных этапа: тест, сборка, развертывание. На этапе сборки я запускаю команду, которая компилирует мой проект и помещает его в архив. Этап сборки выполняется успешно, потому что он переходит к этапу развертывания, но затем этап развертывания сообщает, что не может найти архив. Это в другом каталоге? Что с ним случилось? Спасибо.
Gitlab CI: не удается найти вывод этапа сборки
Ответы (2)
Для каждого теста gitlab-ci очищает папку сборки, поэтому выходные файлы этапа сборки недоступны на этапе развертывания.
Вам также необходимо перестроить свой проект на этапе развертывания.
«Этапы» полезны только для упорядочивания ваших тестов, т. Е. Избегают попытки выполнить тест развертывания, если тест сборки завершился неудачно.
РЕДАКТИРОВАТЬ: Начиная с Gitlab 8.6, можно использовать функцию зависимостей
Я был удивлен, увидев такое же поведение (на 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
artifacts: paths:
. Что позволяет позже для загрузки. - person Unapiedra   schedule 20.04.2016