【发布时间】:2016-05-03 19:59:44
【问题描述】:
我有一个简单的 Jenkinsfile,我想从工作区加载一些数据。我正在使用管道插件来利用存储库中的 Jenkinsfile。构建被移植到匹配的 Jenkins 代理。当我尝试使用“readFile”时,我收到以下消息:
java.io.FileNotFoundException: /path/to/jenkins/workspace/XXXXX/project/data.json(没有这样的文件或目录)
尝试从工作区加载 Groovy 文件时,我也收到相同的消息。
我的Jenkinsfile 看起来像:
node('master') {
stage "Start"
echo "Starting"
stage "Load File"
def myJson = readFile "data.json"
}
知道为什么我无法读取这些文件吗?
谢谢, 蒂姆
【问题讨论】:
-
您的配置系统 → 工作区根目录:
${JENKINS_HOME}/workspace/${ITEM_FULLNAME}/project还是没有/project? -
看起来 Jenkins 在这个版本上创建了 3 个工作区。 998-loops、998-loops@script 和 998-loops@tmp。 998-loops@script 是唯一包含任何数据的东西。但是,另一个分支同时构建 XXX-topic 和 XXX-topic@script。
-
看起来 Jenkins 告诉 Jenkinsfile 脚本的所有内容都是它用完了定义的 $WORKSPACE,而没有 @script。即使在本机 groovy 中执行 pwd 也会告诉脚本它正在 $WORKSPACE 中工作。这可能是一个错误。
-
用户错误,只是注意到我没有“结帐 scm”步骤。哇,那很有趣。感谢 Gerold 的帮助!
-
你会假设一旦 Jenkinsfile 开始处理它就有一个存储库内容的副本。它不是。为了将 repo 内容带入流程,您需要 'checkout scm' ` node('master') { checkout scm stage "Start" echo "Starting" stage "Load File" def myJson = readFile "data.json" } `