在詹金斯中将文件从一个目录复制到另一个目录

EGH*_*HDK 1 jenkins

我正在尝试将测试结果移到公共网页上。

我设置了“构建后操作”>“构建后任务”以执行脚本。

脚本是:

cp -r /var/lib/jenkins/jobs/instrumentation-tests/htmlreports/HTML_Report/ /var/www/html/test/

Jenkins输出:cp:目录/ var / www / html / test不存在

如果我以用户jenkins的身份在运行jenkins的linux机器上登录,则可以导航到源并查看当前是否有文件。我可以导航到目的地,并发现它确实存在。

另外,我尝试以jenkins用户身份从终端运行该命令,并且cp成功完成。

Chr*_*Orr 5

正如您在评论中提到的那样,测试结果是在从属计算机上构建期间生成的。因此,您正在尝试将文件复制到/var/www从属服务器上,而不是Jenkins主服务器上。

您可以通过几种不同的方法解决此问题:

  1. 确保构建在主服务器上进行。

    您可以通过在作业配置页面上选择“限制此项目的运行位置”,然后在文本字段中输入“ master”来执行此操作。

    这确保了在Jenkins用户具有写权限的情况下,文件复制将在构建结束时工作。

  2. 使用SSH上发布插件可将文件/var/www从任何其他机器直接发布到Jenkins主服务器上。

    这样做的好处是,无论在哪个Jenkins构建机器上进行构建,它都可以工作。

您还可以将作业分为两部分:一个作业用于运行测试并生成结果,另一个作业用于发布测试结果。

第一项作业可以在任何计算机上运行,​​并且可以使用“归档工件”的后生成操作来保存生成的HTML文件。然后,它将通过“生成其他作业”生成后动作开始第二项工作,以便进行发布。

第二项工作可以使用上述两种方法之一:使用SSH进行发布,或者确保它在主服务器上运行,并通过使用简单的shell步骤cp

在这两种情况下,您都将使用Copy Artifact插件从上游构建中复制存档的HTML文件。