Мы используем Jenkins 2.x и любим новый плагин Pipeline. Однако при таком большом количестве веток в репозитории дисковое пространство быстро заполняется.
Есть ли какой-либо плагин, совместимый с Pipeline, которым я могу стереть рабочее пространство при успешной сборке?
checkout scm
.Как @gotgenes указал с версией Дженкинса. 2.74 , ниже работает, не уверен, с каких пор, может быть, кто-нибудь сможет отредактировать и добавить версию выше
С Jenkins версии 2.16 и плагином очистки рабочей области , который у меня есть, я использую
чтобы удалить рабочую область.
Вы можете просмотреть его, перейдя в
Затем выберите «шаг: общий этап сборки» на этапе «Образец», а затем выберите «Удалить рабочую область после завершения сборки» на этапе сборки.
источник
cleanWs
.Упомянутые решения
deleteDir()
иcleanWs()
(при использовании плагина очистки рабочей области ) работают, но рекомендация использовать его на дополнительном этапе сборки обычно не является желаемым решением . Если сборка завершается неудачно и конвейер прерывается, эта стадия очистки никогда не достигается, и поэтому рабочая область не очищается при неудачных сборках.=> В большинстве случаев вам, вероятно, следует поместить его в состояние после создания шага, например
always
:источник
cleanWs()
в качестве шага они удаляются до запуска команды архивирования после сборки.cleanWs()
скорее всего, всегда следует запускать как команду после сборкиpost
секция, выcleanWs()
можете безопасно привести ее вalways
состояние, но самое безопасное место находится внутриcleanup
состояния:post { cleanup { cleanWs() } }
Фактически функция deleteDir рекурсивно удаляет текущий каталог и его содержимое. Символические ссылки и переходы не будут использоваться, но будут удалены.
Чтобы удалить определенный каталог рабочей области, оберните шаг deleteDir в шаг dir.
источник
Я использовал deleteDir () следующим образом:
Однако затем мне пришлось всегда запускать Успех или Неудачу ПОСЛЕ, но вы не можете заказать условия публикации. Текущий порядок всегда меняется, прерывается, сбой, успех, а затем нестабилен.
Однако есть очень полезное условие публикации: очистка всегда выполняется последней, см. Https://jenkins.io/doc/book/pipeline/syntax/
В итоге мой пост был таким:
Надеюсь, это может быть полезно в некоторых случаях.
источник
Используя следующий сценарий конвейера:
Следуй этим шагам:
источник
options { skipDefaultCheckout() }
для более быстрого выполнения.Если вы использовали настраиваемое рабочее пространство в Jenkins, то deleteDir () не удалит папку @tmp.
Итак, чтобы удалить @tmp вместе с рабочей областью, используйте следующие
Этот фрагмент также будет работать для рабочей области по умолчанию.
источник
Мы гарантируем, что работаем с чистой рабочей средой, используя функцию плагина git. Вы можете добавить дополнительные варианты поведения, например «Очистить перед оформлением заказа». Мы также используем это для «Удаление устаревших ветвей удаленного отслеживания».
источник
Расширение WipeWorkspace тоже работает. Требуется более длинная форма:
Подробнее здесь: https://support.cloudbees.com/hc/en-us/articles/226122247-How-to-Customize-Checkout-for-Pipeline-Multibranch-
Доступные расширения GitSCM здесь: https://github.com/jenkinsci/git-plugin/tree/master/src/main/java/hudson/plugins/git/extensions/impl
источник
Для Jenkins 2.190.1 это точно работает:
источник
Очистка : поскольку пост-раздел конвейера гарантированно запускается в конце выполнения конвейера, мы можем добавить некоторые уведомления или другие шаги для выполнения финализации, уведомления или других задач конца конвейера.
источник
В моем случае я хочу удалить старые файлы в начале сборки, но это проблематично, поскольку исходный код был проверен.
Мое решение - попросить git очистить все файлы (из последней сборки), о которых он не знает:
Таким образом, я могу начать сборку с нуля, и в случае сбоя рабочая область не будет очищена и, следовательно, легко поддается отладке.
источник
В настоящее время и deletedir (), и cleanWs () не работают должным образом при использовании плагина Jenkins kubernetes, рабочая область пода удаляется, но основная рабочая область сохраняется.
это не должно быть проблемой для постоянных веток, когда у вас есть шаг по очистке рабочего пространства перед мошенничеством с оформлением заказа. Он будет в основном повторно использовать одно и то же рабочее пространство снова и снова: но при использовании многоотраслевых конвейеров мастер сохраняет всю рабочую область и каталог git
Я считаю, что это должно быть проблемой с Дженкинсом, есть ли здесь просветление?
источник