Конвейеры позволяют вам указать агента для каждого этапа, который вы хотите выполнить.Например, если вы хотите запустить тесты на подчиненном устройстве Jenkins Windows и на подчиненном устройстве Jenkins Linux.Проблема при использовании разных ведомых устройств на разных этапах в одном трубопроводе заключается в том, что содержимое вашей рабочей области не предоставляется новому ведомому устройству.
Таким образом, вы можете выполнить git clone
на подчиненном устройстве с пометкой «Linux».и когда следующий этап должен быть выполнен на ведомом устройстве Windows, тогда ведомому устройству Windows необходимо получить данные из рабочей области (из git clone
), которая в настоящее время находится на ведомом устройстве Linux.
Здесь вы можете использовать stash / unstash.Вы можете спрятать свой контент от подчиненного устройства Linux (это сохранит ваши спрятанные файлы на главном устройстве) и распаковать его на ведомом устройстве Windows (= извлечь данные в рабочей области этого ведомого устройства и удалить их из главного устройства).В вашем примере вы сохраните файлы в src
на вашем ведущем устройстве, чтобы вы могли загрузить их снова на другом ведомом устройстве на более позднем этапе.
Для небольших файлов следует использовать stash и unstash, поэтому примервыше не очень хороший (или ваш репо должен быть маленьким).Stash создан для хранения некоторых небольших файлов / ресурсов, а не для хранения целых хранилищ (будет очень медленным).Затем вам нужно обратиться к системам, которые совместно используют рабочие пространства между несколькими ведомыми устройствами.
Использование stash не требуется, если вы определяете «глобального» агента для всего своего конвейера и запускаете весь конвейер на одном и том же ведомом устройстве, потому что нет '• необходимость отправлять / делиться контентом рабочей области.Но в этом случае вы потеряете некоторую гибкость конвейеров, например, параллельные этапы на разных ведомых устройствах.