我定义了一个管道作业,如下:
pipelineJob('job/path/job name') {
...
parameters {
...
fileParam("HASHES", "json file")
...
}
那么,在后续的脚本中如何获取文件的完整路径呢?如果我这样做
echo "${HASHES}"
它正确打印文件名(例如hashes.json
),但是我找不到文件在哪里。
如果我这样做,例如
sh("ls ${workspace")
该文件不会列出
本机文件参数插件和管道支持存在一个长期存在的问题 (JENKINS-27413) - 这基本上意味着在管道作业中,执行管道时,文件不会自动加载到作业的工作区中。
为了克服这个问题,创建了一个名为“文件参数插件”的专用插件,它提供了与 Pipeline 兼容的替代类型的文件参数,并且不会受到 Jenkins 核心内置类型的架构缺陷的影响。 使用此参数类型时,您可以使用多种方法在需要时将其加载到工作区中。最简单的是使用
withFileParameter
步骤:
stage('Example') {
steps {
withFileParameter('HASHES') {
sh 'cat $HASHES'
}
}
}
对于在不同代理上运行的单独阶段,也可以多次调用此方法。