How to use source command within Jenkins pipeline script

笑着哭i 提交于 2020-01-22 13:37:05

问题


I recently rewrite bash execution command into Jenkins pipeline. The old code is like

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

Now I use pipeline script to wrap the command, like this

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

However, I got an error, as.../.jenkins/script.sh: line 9: source: environment.sh: file not found. When I try to less environment.sh, it display correctly. So I suspect something wrong with source command within sh wrap.

Before using pipeline, source environment.sh command is working fine in shell execution. So source is install at Jenkins server, it seems pipeline script don't know what is the source command.

How could I do to run source command within sh wrapped block?


回答1:


Replace source environment.sh with

. ./environment.sh

Please note there is a space after first dot.




回答2:


source is a bash/ksh/etc extension, provided as a more "substantial" synonym for ..

In sh, you need to use . in case the underlying shell is one (such as dash) that does not support the command source.

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


来源:https://stackoverflow.com/questions/38664765/how-to-use-source-command-within-jenkins-pipeline-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!