詹金斯版。2.121.3 - 从工作区删除文件

sfg*_*ups 1 jenkins-pipeline

在詹金斯版。2.121.3 使用管道试图删除文件。它给出的脚本不允许错误消息。

是否有另一种方法可以在不使用 OS 命令的情况下删除 Jenkins 中的文件?

Scripts not permitted to use method java.io.File delete. Administrators can decide whether to approve or reject this signature.
[Pipeline] End of Pipeline
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method java.io.File delete
Run Code Online (Sandbox Code Playgroud)

流水线代码

stage('Delete test.zip file') {
    if (fileExists('test.zip')) {
        new File('test.zip').delete()
    } else {
        println "test.zip file not found"
    }
}
Run Code Online (Sandbox Code Playgroud)

amd*_*mal 7

有几种替代方法:

  1. 通过jenkins 共享库,您可以将此代码包装为函数或类:
#!/usr/bin/groovy
package org.utils

class PipelineUtils { 
    static def deleteFile(String name) { new File(name).delete() } 
}
Run Code Online (Sandbox Code Playgroud)

在您的管道脚本中,您需要导入库:

@Library('your-jenkins-library')_    
import static org.utils.PipelineUtils.*
deleteFile('test.zip')
Run Code Online (Sandbox Code Playgroud)
  1. 正如@Sean 建议通过“管理 Jenkins > 进程内脚本批准”来批准脚本。
  2. 文件操作插件
fileOperations([script.fileDeleteOperation(excludes: '', includes: 'test.zip')])
Run Code Online (Sandbox Code Playgroud)
  1. Workspace Cleanup Plugin,但您需要找到合适的排除模式,否则这将清除所有文件:
def new_exclude_patterns = [[pattern: ".git/**", type: 'EXCLUDE']]
cleanWs deleteDirs: false, skipWhenFailed: false, patterns: new_exclude_patterns
Run Code Online (Sandbox Code Playgroud)