В моем скрипте jenkins-конвейера есть шаг, который должен создать каталог.Соответствующая часть выглядит следующим образом:
steps.println 'target file path: ' + folder.toString()
steps.println 'who am i?: ' + "whoami".execute().text
def sout = new StringBuilder()
def serr = new StringBuilder()
def cmd = ('mkdir -v -p ' + folder.toString())
steps.println 'cmd = ' + cmd
def proc = cmd.execute()
proc.consumeProcessOutput(sout, serr)
proc.waitForOrKill(1000)
if (proc.exitValue() == 0){
steps.println 'Success: ' + sout
}
else {
steps.println 'ERROR: ' + serr
throw new Exception('Could not create directory "' + folder.toString() +'"')
}
Однако, когда код выполняется, я получаю следующий вывод:
Destination Path =
/home/jenkins/jenkins_slave/workspace/atlassianPublishTest_master-6R2ESEJZC6HJUUVOOHAQIN7KEMQAPLOBYDS3KQUR5VE6R5RBIUXA/files/docs/Storfirst Release Notes.pdf
[Pipeline] echo
target file name: Storfirst Release Notes.pdf
[Pipeline] echo
target file path:
/home/jenkins/jenkins_slave/workspace/atlassianPublishTest_master-6R2ESEJZC6HJUUVOOHAQIN7KEMQAPLOBYDS3KQUR5VE6R5RBIUXA/files/docs
[Pipeline] echo
who am i?: jenkins
[Pipeline] echo
cmd = mkdir -v -p
/home/jenkins/jenkins_slave/workspace/atlassianPublishTest_master-6R2ESEJZC6HJUUVOOHAQIN7KEMQAPLOBYDS3KQUR5VE6R5RBIUXA/files/docs
[Pipeline] echo
ERROR: mkdir: cannot create directory ‘/home/jenkins’: Permission denied
Я проверил, что разрешения правильны для всехпапки (home принадлежит root, остальные принадлежат jenkins и имеют разрешения для всего, кроме глобальной записи).Только две нижние папки не существуют, остальные существуют и имеют соответствующие права доступа.
Когда я выполняю команду на узле jenkins вручную, она работает, как и ожидалось, но, как вы можете видеть, даже если этоработает как владелец папки, похоже, что он пытается создать корневую папку (/ home / jenkins), которую он явно не имеет разрешения на создание.
Стоит отметить причину, по которой я используюкоманда mkdir вместо функции groovy File.mkdirs () вызвана тем, что ей тоже не удалось создать каталоги.
Может кто-нибудь подсказать, что я здесь не так делаю?Спасибо