Piszę zadanie rurociągu, które wywoła inny skrypt do wykonania. Plik Jenkins i skrypt istnieją w tym samym katalogu, a zadanie nie znajduje skryptu do uruchomienia.Zadanie Jenkins Pipeline nie może znaleźć skryptu z powodu utworzenia ścieżki @tmp
To jest odpowiednia część skryptu;
stage ('Update') {
try {
dir('jenkins/pipeline/update-jenkins-plugins-ppln') {
sh 'ls -l'
sh 'update-plugins.sh'
}
}
, który zwraca następujący błąd;
[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]tmp/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
Jak widać, pathing używam jest prawidłowy, ponieważ zgodnie z ls
plik, muszę update-plugins.sh
znajduje się w katalogu Mam pathed do. Z jakiegoś powodu, podczas wyszukiwania skryptu Jenkins dodaje na ścieżkę @tmp/durable-8d48734f/script.sh
.
Różne rozwiązywanie problemów:
- czytałem, że trzeba ponownie, nawet jeśli jesteś już sprawdzenie go dostać Jenkinsfile kasy oddziału, więc jestem.
- Mam ssh'd w polu Jenkinsa, aby sprawdzić i tak, skrypt jest tam.
Dlaczego Jenkins dodaje bity @tmp i czy istnieje sposób, aby temu zapobiec?
Próbowałem już; ten sam błąd '+ ./update-plugins.sh /var/lib/jenkins/workspace/[email protected]/durable-88ee0ed4/script.sh: 2:/var/lib/jenkins/workspace/[email protected]/durable-88ee0ed4/script.sh: ./update-plugins.sh: not found' – Alex
To dziwne. Mogę tylko zaproponować ci wypróbowanie sh 'bash update-plugins.sh' lub obliczyć pełną ścieżkę za pomocą potoku func pwd(), połączyć i wywołać skrypt przez absolutną ścieżkę. – izzekil
Dla mnie działało to za pomocą "./" na początku nazwy skryptu. –