当前位置: 首页 > 面试题库 >

FileNameFinder()。getFileNames在一个Jenkins节点上失败

胡墨竹
2023-03-14
问题内容

使用groovy从jenkins工作空间获取文件列表在一个节点上失败,但在另一个节点上有效。这是管道中的代码:

 def pd = pwd()
 bat "dir $pd"
 def bat_files = new FileNameFinder().getFileNames(pd, 'G*.bat')

输出:

C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe>dir C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe 
 Volume in drive C is OSDisk
 Volume Serial Number is AAA1-73FA

 Directory of C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe

01/23/2017  05:34 PM    <DIR>          .
01/23/2017  05:34 PM    <DIR>          ..
01/23/2017  05:34 PM                 4 GOL.bat
               1 File(s)              4 bytes
               2 Dir(s)  134,906,617,856 bytes free
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
C:\Jenkins\Slave\workspace\TestFolder\CodeTestPipe does not exist.
    at org.apache.tools.ant.types.AbstractFileSet.getDirectoryScanner(AbstractFileSet.java:483)
    at org.codehaus.groovy.ant.FileIterator.setNextObject(FileIterator.java:119)
    at org.codehaus.groovy.ant.FileIterator.hasNext(FileIterator.java:81)
    at groovy.util.FileNameFinder.getFileNames(FileNameFinder.groovy:44)
    at groovy.util.FileNameFinder$getFileNames.callCurrent(Unknown Source)
    at groovy.util.FileNameFinder.getFileNames(FileNameFinder.groovy:31)
    at

问题答案:

管道在Jenkins主服务器上执行,只有通过启用了远程处理的API的魔力,事情才会在所选节点上发生。因此File以及所有使用File的东西都不起作用,而且永远不会:它总是在master上执行。

来源:https://groups.google.com/forum/#!topic /
jenkinsci-
users /
yBiYbwWjg-I

我能够通过在bat命令中使用dir获取文件:

def bat_out = bat( returnStdout: true, script: '@echo off & dir /b G*.bat').trim()


 类似资料:
  • 我们有一个项目,其中我们有几个Jenkins作业:一种类型的作业运行交付(a), 一个只进行编译和单元测试的程序(B) 和 运行集成测试、静态代码分析等(C)的人。 我们在四个 Jenkins 节点(主节点三个从节点)上运行,我们的作业是声明性管道作业的混合,并在 Jenkins 作业中手动单击。 我们一次只想为每个节点运行一个集成测试构建。然而,我们希望运行尽可能多的交付(A)和代码质量(B)构

  • 目前,Jenkins 上有多个管道(A、B、C)和节点(X、Y、Z)。我们启用了 Throttle Concurrent Builds 插件,以确保管道中只有一个构建在单个节点上运行。 问题是,使用这种方法,来自不同管道的构建可能会发生冲突(例如,管道A可能已经在节点X上执行,我们不希望任何其他管道在节点X上执行,直到管道A完成)。TCB插件确保来自单个管道的多个构建不会在一个节点上运行,但它不会

  • 我试图将一些JSON对象映射到java对象,然后将这些对象保存到我的neo4j DB中。 我想知道是否有使用neo4j-ogm的解决方案,或者我需要添加Spring Data Neo4J(SDN)来解决这个问题?

  • 我有一个多分支管道架构的以下Jenkinsfile 我试图在Ubuntu和Red Hat节点上并行运行“构建”阶段,而仅在Ubuntu节点上运行“测试”阶段。 任何人都可以帮助我指定如何选择在哪些节点上运行哪些阶段。我在网上找到的解决方案很少,但他们建议重写构建阶段两次:一次用于Red Hat节点,另一次用于Ubuntu节点。难道没有办法在没有代码重复的情况下做到这一点吗? 非常感谢

  • 问题内容: 我有一个问题,为什么节点v6.7无法运行此代码: 有人知道为什么会这样吗?我以为v6支持对象传播。但是我想不是吗?这是我看到的错误: 问题答案: 看起来ES6传播运算符仅适用于数组和可迭代对象。它是专为 无法正常工作 的对象:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Operators/Spread_o

  • 我有一个设置,其中存在一个 JenkinsMaster(jenkins-master)机器和一个JenkinsSlave Node(jenkins-server-one)。Slave Node用于编译Maven项目。这些项目是从Gitlab安装中拉下来的。 在主服务器端运行Jenkins作业时,我在控制台中看到以下错误: [ERROR]您指定的目标需要执行一个项目,但此目录(/var/jenkin