【问题标题】:jenkins pipeline unable to read files詹金斯管道无法读取文件
【发布时间】: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" } `

标签: jenkins jenkins-pipeline


【解决方案1】:

当 Jenkins 处理 Jenkinsfile 时,它​​不会自动下拉整个源代码库。您需要执行“checkout scm”来下拉存储库的内容。如果您不这样做,则管道脚本将无法使用其他文件。

【讨论】:

  • 为什么投反对票?这是一个有效的要求,操作人员和其他人可能已经忘记了。
  • 为什么投反对票?它至少解决了我的问题。点赞。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-27
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 2018-11-28
  • 1970-01-01
相关资源
最近更新 更多