我想将文件从构建后的 Jenkins 工作区传输到远程服务器上的某个位置。工作中的所有步骤构建都很顺利,但总是传输 0 个文件。
这是控制台输出:
Started by user Patrick
Building in workspace /var/lib/jenkins/jobs/20eyes Build/workspace
Fetching changes from the remote Git repository
Fetching upstream changes from https://github.com/project/project.git
using .gitcredentials to set credentials
Checking out Revision a758e0f8e534271b999a2fc8696b6fd5a3d5e500 (origin/master)
executing script:
cd /var/www/20eyes-web
[SSH] exit-status: 0
SSH: Connecting from host [dev1.remotehost]
SSH: Connecting with configuration [dev2.remotehost] ...
SSH: Disconnecting configuration [dev2.remotehost] ...
SSH: Transferred 0 file(s)
Build step 'Send files or execute commands over SSH' changed build result to SUCCESS
Finished: SUCCESS
作业配置为在任何提交推送到 GitHub 后构建
传输集是: 源文件:
/var/lib/jenkins/jobs/20eyes Build/workspace/**/*
删除前缀:
/var/lib/jenkins/jobs/20eyes Build/workspace
我认为,您的配置有问题。 我们有 2 个位置需要配置。
在您的项目中。 我们将重点关注传输集:(源文件、删除前缀、远程目录)
2.1 源文件:如果为空=工作空间目录。 在你的情况下,我认为你应该输入
**/*
希望有帮助! 对不起我的英语。
首先尝试的快速操作:仅使用 **/* 设置源文件夹以查看是否复制了任何文件。如果文件被复制,请查看此处,了解如何编写正确的路径here
我的建议:
20eyes Build
可能会在文件/目录匹配中产生一些麻烦/var/lib/jenkins/...
应替换为作业工作区的相对路径在我的例子中,我在“传输集源文件:”中使用绝对路径(从根目录开始)。当我更改相对于工作区的路径时,它起作用了!
另一个常见错误
sourceFiles
这行不通:
sourceFiles: '/path/dir/**'
sourceFiles: '../dir/**'
sourceFiles: './dir/**'
!虽然这会:
sourceFiles: 'dir/**'
行为解释在插件文档中:
sourceFiles
是一个字符串,逗号分隔的包含列表,用于 Ant 文件集,例如。 '**/*.jar'(请参阅 Ant 手册中的模式)。
Ant 手册中的模式说:
一般来说,模式被认为是相对路径,相对于任务相关的基目录(在 的情况下是 dir 属性)。 仅考虑在该基目录下找到的文件。因此,虽然像 ../foo.java 这样的模式是可能的,但应用时它不会匹配任何内容,因为基本目录的父目录永远不会扫描文件。