在管道scrpit中访问Jenkins工作区文件

时间:2016-11-11 13:36:17

标签: jenkins-pipeline

我对Jenkins很新,如果问题不够详细,我很抱歉,但我发誓我先做了自己的搜索。

我有一个管道脚本,需要处理在上一步中从SCM(git)中提取的文件。 传递给管道的参数之一是所有这些文件所在的文件夹。此文件夹中可能包含子文件夹,我也需要处理它们。

因此,例如,我可以将参数 ./ my-folder 传递给管道, my-folder 可能包含以下内容:

./我的文件夹/ file1.json

./我的文件夹/ file2.json

./我的文件夹/子文件夹/ file3.json

my-folder目录将成为构建阶段克隆的存储库的一部分。

当我在本地开发我的Groovy脚本时,我正在做类似的事情:

def f = new File(folder)

但是,如果代码在主服务器上运行而文件夹位于不同的节点上,则这在Jenkins中不起作用。 经过广泛的研究,我现在知道有两种方法可以在Jenkins中读取文件。

  1. 使用readFile。这没关系,但我还没有找到一种简单的方法来扫描整个文件夹和子文件夹来加载所有文件
  2. 使用FilePath。这将是我的首选方式,因为它更多OO但我还没有找到创建此类实例的方法。我在互联网上搜索时看到的所有方法都参考了build变量,我不完全确定为什么,在脚本中没有定义。事实上,我得到了groovy.lang.MissingPropertyException: No such property: build for class: WorkflowScript
  3. 我希望这个问题有意义,否则我很乐意添加更多细节。

    谢谢,

    尼科

1 个答案:

答案 0 :(得分:0)

我已设法使用以下方法扫描文件夹的内容:

sh "find ${base-folder} -name *.* > files.txt"
def files = readFile "files.txt"

然后循环遍历files.txt中的行以打开每个文件。

问题是这仅适用于txt文件。我仍然无法使用readFile

打开二进制文件(例如:zip文件)