2017-07-11 24 views
2

は、次のJenkinsfileを考える:Jenkinsfileの関数で複数のshコマンドを実行するにはどうすればよいですか?

私はジェンキンス上のコンソールログに次のように表示
@NonCPS 
void touchFiles() { 
    sh "touch foo" 
    sh "touch bar" 
} 

node('general') { 
    touchFiles() 

    sh "ls" 
} 

:「バー」は作成されていないことを

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 

注意。

最初のshがここで実行されるのはなぜですか? Jenkinsfileで一連のshコールを除外するにはどうすればよいですか?

(私はsh "touch foo; touch bar"を書くことができる知っているが、より複雑なJenkinsfilesに、私は時々別のsh呼び出しを必要とする。)

答えて

0

1つのshコマンドを試してみて、あなたの引数を連結します。からの回答に加えて

@NonCPS 
void touchFiles() { 
    sh "touch foo;" + 
     "touch bar" 
} 

node('general') { 
    touchFiles() 

    sh "ls" 
} 
+0

これは当てはまりますが、時には別々の 'sh'コマンドを実行する必要があります。 –

1

あなたはこれを行うことができます:

@NonCPS 
void touchFiles() { 
    sh ''' 
    touch foo 
    touch bar 
    ''' 
} 

node('general') { 
    touchFiles() 

    sh "ls" 
} 
関連する問題