鉴于以下Jenkinsfile:
@NonCPS
void touchFiles() {
sh "touch foo"
sh "touch bar"
}
node('general') {
touchFiles()
sh "ls"
}
我在Jenkins的控制台日志中看到以下内容:
Running on box35 in /internal/slave/build/workspace/1499786637.EXAMPLE_test-repo_test_jenkinsfile
[Pipeline] {
[Pipeline] sh
[1499786637.EXAMPLE_test-repo_test_jenkinsfile] Running shell script
+ touch foo
[Pipeline] sh
[1499786637.EXAMPLE_test-repo_test_jenkinsfile] Running shell script
+ ls
foo
请注意,尚未创建“bar”。
为什么只有第一个sh
在这里运行?如何在Jenkins文件中分解出一系列sh
调用?
(我知道我可以写sh "touch foo; touch bar"
但是在更复杂的Jenkins文件中,我有时需要单独的sh
调用。)
答案 0 :(得分:2)
除了@arifCee的回答,你可以这样做:
@NonCPS
void touchFiles() {
sh '''
touch foo
touch bar
'''
}
node('general') {
touchFiles()
sh "ls"
}
答案 1 :(得分:0)
尝试一个sh命令并连接你的参数:
@NonCPS
void touchFiles() {
sh "touch foo;" +
"touch bar"
}
node('general') {
touchFiles()
sh "ls"
}