最近、bash実行コマンドをJenkinsパイプラインに書き直しました。古いコードは
...
source environment.sh
//Build
//Test
...
次のように、パイプラインスクリプトを使用してコマンドをラップします。
sh '''
...
source environment.sh
//Build
//Test
...
'''
ただし、as.../.jenkins/script.sh: line 9: source: environment.sh: file not found
。 less environment.sh
、それは正しく表示されます。だから、source command
以内に sh wrap
。
パイプラインを使用する前に、source environment.sh
コマンドは、シェル実行で正常に機能しています。ソースはJenkinsサーバーにインストールされているので、パイプラインスクリプトはソースコマンドが何であるかを知らないようです。
Shラップブロック内でソースコマンドを実行するにはどうすればよいですか?
置換source environment.sh
と
. ./environment.sh
最初のドットの後にスペースがあることに注意してください。
source
はbash
/ksh
/etc拡張であり、.
のより「実質的な」同義語として提供されます。
sh
では、基になるシェルがdash
コマンドをサポートしないシェル(source
など)である場合、.
を使用する必要があります。
sh '''
...
. environment.sh
//Build
//Test
...
'''