を作成中@tmpパスにスクリプトを見つけることができません。 Jenkinsfileとスクリプトは同じディレクトリに存在しますが、ジョブは実行するスクリプトを見つけることができません。ジェンキンスパイプラインの仕事が原因私は実行するために別のスクリプトを呼び出しますパイプラインの仕事を書いています
これは、スクリプトの該当ビットです。
これは、次のエラーを返します。
[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
を必要とするファイルは、私はパス化されてきたディレクトリ内にあるので、私が使用しているパス機能は正しいです。しかし何らかの理由で、実際にスクリプトを検索するときにJenkinsは@tmp/durable-8d48734f/script.sh
をパスに追加しています。
様々なトラブルシューティング:
- 私はあなたがすでにJenkinsfileを得るためにそれをチェックアウトしている場合でも、再びブランチをチェックアウトする必要があることを読んで、私は思います。
- 私はジェンキンスのボックスにチェックを入れました。はい、スクリプトはそこにあります。
なぜジェンキンスは@tmpビットを追加していますか?この現象を防ぐ方法はありますか? sh './update-plugins.sh'
すでに試しました。同じエラー '+ ./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:見つからない ' – Alex
それは変です。 sh 'bash update-plugins.sh'を試してみるか、パイプラインfunc pwd()を使ってフルパスを計算し、絶対パスでスクリプトを連結して呼び出すことをお勧めします。 – izzekil
私にとっては、スクリプトの名前の先頭に './'を使用していました。 –