В конвейере Jenkins, когда сборка выполняется на определенном узле, рабочее пространство выделяется для этого агента.Мы не устанавливаем путь к рабочей области, поэтому он определяется автоматически.Я понимаю, что рабочая область должна содержать номер исполнителя, чтобы изолировать сборки, когда одно и то же задание выполняется одновременно на одном и том же агенте.
Но ... Как именно создается путь к рабочей области?
Наша сборка назначена конкретному узлу (с 4 исполнителями) и настроена на запрет одновременных сборок.Обычно это было присвоено:
EXECUTOR_NUMBER=1
WORKSPACE=xxx\yyy\jobname
В какой-то момент сборка начала выполняться на исполнителе 2, но все еще использовала то же рабочее пространство, что и раньше.
Позже сборка снова выполнялась на исполнителе 1, но теперь использовалась
WORKSPACE=xxx\yyy\jobname@2
, которая прервала сборку, поскольку она не может обработать знак «@» в пути.С этого момента сборка продолжала использовать это рабочее пространство, даже после установки числа исполнителей на машине сборки равным 1, ручного удаления каталога рабочей области агента и т. Д.
Итак, мои вопросы:
- Как точно определяется путь к рабочей области?Почему он получает суффикс @ 2 внезапно?
- Дженкинс повторно использует предыдущее рабочее пространство, независимо от номера исполнителя?
- Если да, где хранится эта информация?Я не смог найти ничего в конфигах работы, связанных с последним использованным путем к рабочей области ...
Спасибо за любые идеи!
Мы используем Jenkins LTS 2.107.2 и вышесовременные плагины для Pipeline (я не знаю, какая версия представляет особый интерес).