Jenkins 重命名文件-詹金斯

Jenkins 重命名文件-詹金斯,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,作为管道的一部分,我需要在将文件推送到GitHub之前对其进行重命名。以前,当在主节点上运行Jenkins作业时,这是有效的,但现在我们在代理上运行它们 def rename_build_file() { print "Append Version Number to File" // File without version String myFile = "${WORKSPACE_PATH}/release-pipeline/project/dist/myFile.js /

作为管道的一部分,我需要在将文件推送到GitHub之前对其进行重命名。以前,当在主节点上运行Jenkins作业时,这是有效的,但现在我们在代理上运行它们

def rename_build_file() {
  print "Append Version Number to File"
  // File without version
  String myFile = "${WORKSPACE_PATH}/release-pipeline/project/dist/myFile.js

  // File with version
  String myFileNew = "${WORKSPACE_PATH}/release-pipeline/project/dist/myfile-1.0.js"

  // Rename File
  new File(myFile).renameTo(new File(myFileNew));
}
在Jenkins文件中,我们调用
helper.rename\u build\u file()
,这通常是有效的

当我在代理上运行
sshd
时,我发现我必须运行
sudo
来手动更改文件名(无需输入密码),我是否可以假设当Jenkins作业运行时,它不是以
sudo
的方式运行

如果是这样的话,我怎么能在工作中做到这一点呢


谢谢

在跨多个代理处理文件时,您应该使用管道的工作流步骤,如、和。您可以结合使用这些步骤在当前工作区中创建具有所需名称的新文件

def sourceFile=“发布管道/project/dist/myFile.js”
如果(文件存在(文件:sourceFile)){
def newFile=“发布管道/project/dist/myFile-1.0.js”
writeFile(文件:newFile,编码:“UTF-8”,文本:readFile(文件:sourceFile,编码:“UTF-8”))
}
这可以通过插件完成:


该插件有一个支持的列表。

谢谢你的回答,这正是我需要的,而且使用管道工作流步骤更容易:-)我需要做一个实际的重命名,而不是复制/删除,因此如果标题中的原始问题能够得到回答就太好了。有可能吗?
pipeline {
    agent any

    stages {
        stage('Rename') {
            steps {
                cleanWs()
                fileOperations([fileCreateOperation(fileName: 'foo', fileContent: '')])
                fileOperations([fileRenameOperation(destination: 'bar', source: 'foo')])
                sh "ls -l"
            }
        }
    }
}