声明管道中的文件参数

时间:2018-07-23 13:50:09

标签: jenkins jenkins-pipeline jenkins-declarative-pipeline

我正在开发声明性管道,并希望使用文件参数读取其内容,但无法按预期工作

parameters{
        file(fileLocation:'list.txt', description:'contains list of projects to be build')
   }

我遇到以下错误

org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 12: Invalid parameter "fileLocation", did you mean "description"? @ line 12, column 14.
           file(fileLocation:'release-list.txt', description:'contains list of projects to be build')

以下是基本步骤插件提到的另一个选项

readFile: Read file from workspace
Reads a file from a relative path (with root in current directory, usually workspace) and returns its content as a plain string.
file
Relative ( /-separated) path to file within a workspace to read.
Type: String
encoding (optional)
Type: String

其在脚本步骤中的工作方式

def myfile = readFile('list.txt')
echo "${myfile}"

但是当我们使用其他基本步骤(如dir)时,如何直接在声明性脚本中使用它呢?

3 个答案:

答案 0 :(得分:0)

以下语法有效

parameters{
        file name:'list.txt', description:'contains list of projects to be build'
   }

但是fileLocation参数仍然不可接受。

以下语法在Jenkins2 Up&Running书中可用,但不起作用

parameters{
        file(fileLocation:'list.txt', description:'contains list of projects to be build')
   }

答案 1 :(得分:0)

file参数的正确参数是namedescription。所以应该是:

file(name:'list.txt', description:'contains list of projects to be build')

但是,从2015年开始就有一个詹金斯公开问题涉及文件参数不适用于管道,因此我认为即使这样也不能解决您的问题。 https://issues.jenkins-ci.org/browse/JENKINS-27413

答案 2 :(得分:0)

直到悬而未决的问题得到解决,我相信我们可能必须坚持采用自由样式模式并利用下游插件功能来处理下游管道作业或同一作业中的事务。

这是我的尝试,不管哪种类型(也支持Binaries)都可以工作:https://i.stack.imgur.com/vH7mQ.png

${list.txt}将指向正确的文件。