获取fileParam文件绝对路径

问题描述 投票:0回答:1

我定义了一个管道作业,如下:

pipelineJob('job/path/job name') {
...
parameters {
    ...
    fileParam("HASHES", "json file")
    ...
}

那么,在后续的脚本中如何获取文件的完整路径呢?如果我这样做

echo "${HASHES}"
它正确打印文件名(例如
hashes.json
),但是我找不到文件在哪里。

如果我这样做,例如

sh("ls ${workspace")
该文件不会列出

jenkins jenkins-pipeline jenkins-groovy jenkins-job-dsl
1个回答
0
投票

本机文件参数插件和管道支持存在一个长期存在的问题 (JENKINS-27413) - 这基本上意味着在管道作业中,执行管道时,文件不会自动加载到作业的工作区中。

为了克服这个问题,创建了一个名为“文件参数插件”的专用插件,它提供了与 Pipeline 兼容的替代类型的文件参数,并且不会受到 Jenkins 核心内置类型的架构缺陷的影响。 使用此参数类型时,您可以使用多种方法在需要时将其加载到工作区中。最简单的是使用

withFileParameter

步骤:

stage('Example') {
    steps {
        withFileParameter('HASHES') {
          sh 'cat $HASHES'
        }
    }
}

对于在不同代理上运行的单独阶段,也可以多次调用此方法。

© www.soinside.com 2019 - 2024. All rights reserved.