我的 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