При вызове метода sh
с returnStdout: true
часто выводится новая строка с выходными данными.Если вы присваиваете этот вывод переменной, то результирующее строковое значение также будет содержать символ новой строки.Это означает, что ваш sh "usermod -d ${WORKDIR} jenkins"
будет usermod -d /var/lib/jenkins/workspace/-www_feature_ci-integration-GWZMSYY6XHJA7QDBD4KWGXZCOVUKOBI35JMKYOQV76QXZTCYE6CA\n jenkins"
.Затем команда будет выполнена без пользовательского аргумента jenkins
.
Чтобы исправить это, вы можете использовать метод .trim()
для удаления новой строки (и конечного пробела).
Thisпроще всего это сделать с помощью:
WORKDIR="""${sh(
returnStdout: true,
script: 'pwd'
).trim()}"""
во время присваивания или:
sh "usermod -d ${WORKDIR.trim()} jenkins"
во время интерполяции строки.