我想知道是否有一种函数或管道插件可以在工作区下创建目录,而不是使用sh“mkdir directory”
命令?
我尝试使用Groovy指令new File("directory").mkdirs()
,但它总是返回异常。
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许脚本使用新的java.lang.RuntimeException java.lang.String
我想知道是否有一种函数或管道插件可以在工作区下创建目录,而不是使用sh“mkdir directory”
命令?
我尝试使用Groovy指令new File("directory").mkdirs()
,但它总是返回异常。
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:不允许脚本使用新的java.lang.RuntimeException java.lang.String
如果目录不存在,您可以使用dir
步骤,然后dir
步骤将在编写文件或类似操作时创建所需的文件夹:
node {
sh 'ls -l'
dir ('foo') {
writeFile file:'dummy', text:''
}
sh 'ls -l'
}
sh
步骤只是为了显示已创建文件夹。缺点是您将在文件夹中得到一个虚拟文件(如果您要写其他文件,则不需要虚拟写入)。如果我运行此代码,我将得到以下输出:
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
dir
的闭包是否可以为空语句,但你不必创建一个文件 - 我只是为了记录目录而报告了当前目录。 - simon.wattssh 'echo $(pwd -P)'
来记录目录位置 :) - simon.wattsdir
块内部的步骤将以指定目录为当前目录执行。因此,如果要在工作区设置的当前目录中运行逻辑,则不能仅仅将逻辑放在该块内。 - vadipp只需使用文件操作插件即可。
fileOperations([folderCreateOperation('directoryname')])
pwd -P
。这也会访问目录并因此隐式创建它。dir('foo') {
sh 'pwd -P'
}
注:
-P
。可以假设,否则pwd
只是传递环境变量。sh 'mkdir -p foo'
同样适用(如果完全使用sh
)。