Jenkins Pipeline Job with file parameter

Dan*_*ler 24 parameters jenkins jenkins-pipeline

我正在整理一个Jenkins管道作业,它将获取一个文件参数.我可以触发作业并将其指向一个文件但是我无法找到文件的最终位置(在普通的自由式作业中,它将在工作区中).

上传的文件去了哪里?或者文件参数目前不适用于管道?

Ale*_*exD 15

管道和文件参数目前存在问题(https://issues.jenkins-ci.org/browse/JENKINS-27413).


Par*_*azi 9

找到一个 WA(严格用于基于文本的文件输入)我们可以使用 Jenkins 多行字符串参数并要求用户将文件内容粘贴到它。在我们的管道中,使用管道步骤 writeFile 写入此参数的内容,如下所示:

stage('File Param WA') {
          writeFile file: 'demo.yaml', text: params.DEMO_YAML
}
Run Code Online (Sandbox Code Playgroud)

多行字符串参数


Chr*_*ter 7

解决方法如下:

node {
    deleteDir()
    stage("upload") {
        def inputFile = input message: 'Upload file', parameters: [file(name: 'data.zip')]
        new hudson.FilePath(new File("$workspace/data.zip")).copyFrom(inputFile)
        inputFile.delete()
    }
    stage("checkout") {
        echo fileExists('data.zip').toString()
    }
}
Run Code Online (Sandbox Code Playgroud)

我知道解决方案不是那么漂亮,因为管道会因上传而中断,但可以正常工作。

此外,“ copyFrom”是必需的,因为输入将“ data.zip”存储在作业目录中,而不是工作空间中(不知道为什么)

  • `java.nio.file.NoSuchFileException: jenkins/workspace/job/data.zip` (2认同)
  • 我遇到了另一个问题:“脚本不允许使用新的 java.io.File java.lang.String” (2认同)