Я пишу задание на конвейер, которое вызывает другой script для выполнения. Файлы Jenkins и script существуют в одном каталоге, но в задании не удается найти script.
Это соответствующий бит script;
stage ('Update') {
try {
dir('jenkins/pipeline/update-jenkins-plugins-ppln') {
sh 'ls -l'
sh 'update-plugins.sh'
}
}
который возвращает следующую ошибку:
[update-jenkins-plugins-ppln] Running shell script
+ ls -l
total 8
-rw-r--r-- 1 jenkins jenkins 2441 Dec 20 09:34 Jenkinsfile
-rwxr-xr-x 1 jenkins jenkins 506 Dec 19 14:06 update-plugins.sh
[Pipeline] sh
[update-jenkins-plugins-ppln] Running shell script
+ update-plugins.sh
/var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/[email protected]/durable-11cefdd0/script.sh: 2: /var/lib/jenkins/workspace/update-jenkins-plugins-ppln/jenkins/pipeline/[email protected]/durable-11cefdd0/script.sh: update-plugins.sh: not found
Как вы можете видеть, путь, который я использую, является правильным, потому что в соответствии с ls
файл, который мне нужен update-plugins.sh
, находится в каталоге, к которому я привязался. По какой-то причине, хотя при поиске script Дженкинса добавляется @tmp/durable-8d48734f/script.sh
на путь.
Различные способы устранения неполадок:
- Я прочитал, что вам нужно снова проверить ветку, даже если вы уже проверяете ее, чтобы получить файл Jenkins, так что я.
- У меня есть ssh'd в поле Jenkins, чтобы проверить и да, script есть.
Почему Дженкинс добавляет бит @tmp, и есть ли способ предотвратить это поведение?