2016-12-20 11 views
8

を作成中@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'

答えて

1

私はあなたのPWDは、PATHにされていないと思いますか?それで、あなたの行は次のようになります:

sh '${WORKSPACE}/jenkins/pipeline/update-jenkins-plugins-ppln/update-plugins.sh' 
+0

すでに試しました。同じエラー '+ ./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

+0

それは変です。 sh 'bash update-plugins.sh'を試してみるか、パイプラインfunc pwd()を使ってフルパスを計算し、絶対パスでスクリプトを連結して呼び出すことをお勧めします。 – izzekil

+0

私にとっては、スクリプトの名前の先頭に './'を使用していました。 –

2

あなたはジェンキンスワークスペース環境変数WORKSPACE(ワークスペースの絶対パス)を使用してみました:あなたはこのようにそれを呼び出す必要がありますので、

関連する問題