将文件从 Jenkins master 复制到 Pipeline 中的从属服务器



我的 Jenkins 有一些 Windows 奴隶,所以我需要在管道中将文件复制到它们。我听说过复制到奴隶和复制工件插件,但它们没有管道语法手册。所以我不知道如何在管道中使用它们。

直接复制不起作用。

def inputFile = input message: 'Upload file', parameters: [file(name: 'parameters.xml')]
new hudson.FilePath(new File("${ENV:WORKSPACE}\parameters.xml")).copyFrom(inputFile)

此代码返回并错误:

Caused: java.io.IOException: Failed to copy /var/lib/jenkins/jobs/_dev/jobs/(TEST)job/builds/107/parameters.xml to d:Jenkinsworkspace_dev(TEST)jobparameters.xml

有没有办法在 Jenkins 管道中将文件从主复制到从站?

我了解copyFrom在您的 Windows 节点上执行,因此无法访问源路径。

我想你想看看stash/unstash步骤(Jenkins Pipeline:Basic Steps(,它们跨不同的节点工作。此外,此示例可能会有所帮助。

管道 DSL 上下文master节点上运行,即使您的写入node('someAgentName')管道中也是如此。

  • 尝试使用存储/取消存储,但这对大文件不利。
  • 尝试外部工作区管理器插件。它有管道步骤,适用于大文件。
  • 尝试使用中间存储。 archive()sh("wget $url")会有所帮助。

如果需要将可执行文件复制到测试从站并发布测试结果,则无需复制到从站插件即可轻松做到这一点。

应该在每个测试从站(普通的Windows共享文件夹(上创建一个共享文件夹。

构建

后:构建脚本将可执行文件复制到每个从站上的共享目录。使用copy命令的简单批处理脚本就足够了。

stage ('Copy to slaves') {
    steps {
        bat 'call "copy-to-slave.bat"'
    }
}

测试期间:测试脚本将可执行文件复制到另一个目录并运行它。

测试后:可以使用构建后操作"发布机器人框架测试结果"来报告测试结果。不必先将测试结果文件复制回主数据库。

我推荐Pipeline: Phoenix AutoTest插件

詹金斯插件网站:https://plugins.jenkins.io/phoenix-autotest/#documentation

插件的GitHub存储库:https://github.com/jenkinsci/phoenix-autotest-plugin

最新更新