web-dev-qa-db-ja.com

Jenkinsパイプラインスクリプト内でソースコマンドを使用する方法

最近、bash実行コマンドをJenkinsパイプラインに書き直しました。古いコードは

...
source environment.sh
//Build
//Test
...

次のように、パイプラインスクリプトを使用してコマンドをラップします。

sh '''
    ...
    source environment.sh
    //Build
    //Test
    ...
'''

ただし、as.../.jenkins/script.sh: line 9: source: environment.sh: file not foundless environment.sh、それは正しく表示されます。だから、source command 以内に sh wrap

パイプラインを使用する前に、source environment.shコマンドは、シェル実行で正常に機能しています。ソースはJenkinsサーバーにインストールされているので、パイプラインスクリプトはソースコマンドが何であるかを知らないようです。

Shラップブロック内でソースコマンドを実行するにはどうすればよいですか?

14
Neil

置換source environment.sh

. ./environment.sh

最初のドットの後にスペースがあることに注意してください。

14
Steephen

sourcebash/ksh/etc拡張であり、.のより「実質的な」同義語として提供されます。

shでは、基になるシェルがdashコマンドをサポートしないシェル(sourceなど)である場合、.を使用する必要があります。

sh '''
    ...
    . environment.sh
    //Build
    //Test
    ...
'''
8
chepner