Jenkins管道创建目录

mzillmmw  于 2023-04-29  发布在  Jenkins
关注(0)|答案(3)|浏览(197)

我想知道是否有一个函数或管道插件,允许在工作区下创建目录,而不是使用sh "mkdir directory"
我尝试使用一个groovy指令new File("directory").mkdirs(),但它总是返回一个异常。
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:脚本不允许使用新java。lang.RuntimeException java.lang.String

lyfkaqu1

lyfkaqu11#

你可以做的是使用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
6jjcrrmo

6jjcrrmo2#

使用file operations plugin即可。

fileOperations([folderCreateOperation('directoryname')])
jtjikinw

jtjikinw3#

为了避免@jon-s的答案中出现伪文件,可以简单地使用pwd -P。也访问目录,因此隐式地创建它。

dir('foo') {
   sh 'pwd -P'
}

备注:

  • 似乎需要-P。假设pwd只传递环境变量。
  • 有人可能会说sh 'mkdir -p foo'同样适用(如果使用sh的话)。

相关问题