2017-03-07 179 views
7

我想知道是否有一個功能或管道插件允許在工作區下創建目錄,而不是使用sh "mkdir directory"Jenkins管道創建目錄

我試過使用groovy指令new File("directory").mkdirs()但它總是返回一個異常。

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:腳本不得使用新的了java.lang.RuntimeException java.lang.String中

回答

24

你可以做的是使用dir一步,如果該目錄不存在,那麼dir一步將創建所需的文件夾,當你寫一個文件或類似:

node { 
    sh 'ls -l' 
    dir ('foo') { 
     writeFile file:'dummy', text:'' 
    } 
    sh 'ls -l' 
} 

sh步驟是隻是爲了表明FO lder被創建。缺點是您將在文件夾中有一個虛擬文件(如果您要寫入其他文件,虛擬寫入不是必需的)。如果我運行這個,我得到以下輸出:

Started by user jon 
[Pipeline] node 
Running on master in /var/lib/jenkins/workspace/pl 
[Pipeline] { 
[Pipeline] sh 
[pl] Running shell script 
+ ls -l 
total 0 
[Pipeline] dir 
Running in /var/lib/jenkins/workspace/pl/foo 
[Pipeline] { 
[Pipeline] writeFile 
[Pipeline] } 
[Pipeline] // dir 
[Pipeline] sh 
[pl] Running shell script 
+ ls -l 
total 4 
drwxr-xr-x 2 jenkins jenkins 4096 Mar 7 22:06 foo 
[Pipeline] } 
[Pipeline] // node 
[Pipeline] End of Pipeline 
Finished: SUCCESS 
+0

謝謝@Jon S. Helpfull。 – black4bird

+0

感謝您的回答,遺憾的是文檔中未提及此行爲 – Hoall