Reputation: 3066
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?
Upvotes: 29
Views: 31888
Reputation: 4723
. ./script.sh
it works fine!, but you can also do:
sh '''#!/bin/bash
source /path/to/script.sh
'''
IMPORTANT!: Note that #!/bin/bash
is the first line in the script
Upvotes: 1
Reputation: 532153
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
...
'''
Upvotes: 16
Reputation: 403
If someone want to execute the script with source only solution is to change "Shell executable" to bash in ->Manage Jenkins->Configure System
Upvotes: 1
Reputation: 15844
Replace source environment.sh
with
. ./environment.sh
Please note there is a space after first dot.
Upvotes: 34