У нас есть установка дженкинсов с подчиненными рабами, но как-то не все артефакты доступны из jenkins.Дженкинс, получивший результаты теста от докера-раба
Нашей установка:
- Дженкинс Master работает на одной виртуальной машине
- множественной Docker хостов установки на разное ВМ
- Мы используем PHP-шаблон
- Docker контейнеры выполнены с возможностью выполнения всех тестов необходимых для наших проектов.
- Когда проект строится, контейнер-докер развертывается на одном из хостов Docker, выполняются тесты, результаты финга копируются обратно на хост, контейнер докера привязан к изображению, а запущенный контейнер уничтожается.
- Мы используем «copy to slave plugin», чтобы скопировать наш каталог сборки из подчиненного устройства в master, чтобы все необходимые артефакты находились в главном Jenkins.
Проблема заключается в том, что когда сборка завершена, мы не можем просмотреть файлы рабочей области (которые мы скопировали с копией в подчиненный плагин). Мы также не можем ссылаться на графические файлы, которые были скопированы мастеру.
<img type="image/svg+xml" height="300" src="ws/build/pdepend/overview-pyramid.svg" width="500"></img>
<img type="image/svg+xml" height="300" src="ws/build/pdepend/dependencies.svg" width="500"></img>
Однако мы можем видеть эти изображения во время сборки, когда контейнер докера все еще работает.
Что нам не хватает?
У меня такая же проблема. У меня пока нет решения, но я подозреваю, что когда плагин copy-to-slave работает как шаг пост-сборки, контейнер-докер уже остановлен, поэтому ни один из файлов не копируется. –
Ах, но все файлы копируются в каталог рабочей области на главном сервере. Они просто недоступны через веб-интерфейс jenkins. например http: //jenkins.server/job/project/ws/ Даже если я устанавливаю настраиваемое рабочее пространство проекта в расширенных настройках. –
Да - вы правы, файлы копируются в порядке. Дженкинс просто этого не видит. Когда вы нажимаете на рабочую область, я предполагаю, что вы видите что-то вроде: ** Каталог рабочей области (null) удаляется за пределами Jenkins. ** в то время как он должен сказать: ** Каталог рабочей области (/ path/to/workspace) удаляется вне Jenkins . **. Однако во время процесса сборки рабочая область не пуста, по крайней мере, я могу видеть файлы. Кажется, что Дженкинс считает, что рабочее пространство находится на удаленной машине. В стандартной настройке подчиненного устройства это нормально, но с контейнером Docker, который остановлен после сборки, это неверно. –